Webivew onNavigationStateChange方法在本机反应中多次调用

时间:2020-03-17 06:50:42

标签: android ios react-native webview

我正在制作本机应用程序和一个屏幕,为此我使用了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 >>>>上运行3次时,我想处理1次,那么如何解决此问题?您的所有建议都是可以的。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,但是我将手柄移到了onLoadEnd

_onLoadEndHandle = (input) => {
   console.log(input.nativeEvent)
   if (input.nativeEvent.url.toLowerCase().includes('?type=print')) {
     console.log('printing...')
     this._print() // Calling printing function
   }
}

希望这会对您有所帮助。