从Webview导航到React本机页面

时间:2018-10-08 16:06:07

标签: javascript react-native navigation android-webview postmessage

我有一个React Native应用程序,它使用webView呈现html代码,我使用postmessage在它们之间进行通信。 webview将发送消息以响应本机打开另一个响应本机页面(例如,发送消息“打开登录页面”),因此我将在onMessage(事件)中接收它,然后当我想使用$uniqueList = array_values(array_column(listOrders, null, "id_order")); 时说“可以无法读取未定义的属性navigationTo”。 我使用了this.props.navigateTo并了解到'this'是 DedicatedWorkerGlobalScope ,我不能使用console.log(this)。在这种情况下(当我在DedicatedWorkerGlobalScope中时,我该如何使用navigatTo?)如何关闭或停止渲染Webview来做到这一点?

navigatTo()

这是网络视图:

  onMessage( event ) {
    let post = JSON.parse(event.nativeEvent.data);
    console.log(event)
   switch(post.message){

       case 'open login page':
           console.log(this); // 'DedicatedWorkerGlobalScope'
          this.props.navigateTo('login'); //'can not read property navigation of undefined'
           break;
   }
}

我使用 <WebView // onNavigationStateChange={async (e) => { // console.log(e); // if (async() => await getKey('isLogged') === false) // this.props.navigateTo('login') //its ok here // }} source={{uri: isAndroid ?'file:///android_asset/html/index.html' :'./html/index.html'}} ref={ webView => this.webView = webView } onMessage={this.onMessage} /> 进行导航,并且可以,但是在这种情况下,状态不会更改,因此可以在此处运行   这是我的stacknavigator:

this.props.navigatTo()

1 个答案:

答案 0 :(得分:0)

我自己解决问题:))我应该使用bind, OnMessage = {this.onMessage.bind(this)} 我只是忘记了...