android - Webivew onNavigationStateChange 方法在本机反应中多次调用
问题描述
我正在制作反应本机应用程序和一个屏幕,我为此使用了 webview,我想处理 onNavigationStateChange 道具一次调用,现在它正在调用多次,所以知道如何解决这个问题。参考下面的代码
<WebView
ref={r => this.webview = r}
style={{width:globals.screenWidth, height:globals.screenHeight}}
bounces={false}
style={{ flex: 1 }}
startInLoadingState
scalesPageToFit
javaScriptEnabledAndroid={true}
javaScriptEnabled={true}
domStorageEnabled = {true}
onNavigationStateChange={data =>
this.handleNavigationStateChange(data)
}
onLoadStart={() => {
console.log("onLoadStart-->");
}}
onLoadEnd={() => {
console.log("onLoadEnd-->");
}}
source={{uri: globals.MYURL}}
onError={(error) => this.onError()}
/>
handleNavigationStateChange = navState => {
console.log("navState >>>>" + JSON.stringify(navState));
};
当我在上面运行代码 navState >>>> print 3 次时,我想处理 1 次,那么我该如何解决这个问题?您的所有建议都是值得赞赏的。
解决方案
我有同样的问题,但我将句柄移到 onLoadEnd
_onLoadEndHandle = (input) => {
console.log(input.nativeEvent)
if (input.nativeEvent.url.toLowerCase().includes('?type=print')) {
console.log('printing...')
this._print() // Calling printing function
}
}
我希望这能帮到您。
推荐阅读
- javascript - 通过在 html jquery 中出售书籍添加到购物车
- javascript - 将网格线选项添加到 hAxis 时,Google 图表不会正确呈现
- java - 如何使用带有通配符声明的泛型类?
- laravel - 想根据上述选择选项更改集体选择选项
- java - 为什么,我总是得到错误的正则表达式模式匹配,如何测试和调试它以及在什么时候条件变为错误?
- rest - XPage 休息服务 - 我可以不使用全文索引进行搜索吗?
- android - 与通过 mac 直接连接相比,Android BLE 扫描和连接花费的时间太长
- java - IntelliJ 找不到 google-cloud-storage 类
- regex - 将四位数的年份日期替换为两位数
- microsoft-dynamics - 我们应该使用哪种类型的 Xero 应用程序?