我有一个使用 webView 渲染 html 代码的 react 本机应用程序,我使用 postmessage 在它们之间进行通信。 webview 将向 React Native 发送消息以打开另一个 React 本机页面(例如发送消息"打开登录页面"(,所以我将在 onMessage (事件( 中接收它,然后当我想使用this.props.navigateTo
时,它说"无法读取属性导航到未定义"。 我用了console.log(this)
,明白"这个"是专用的工人全球范围,我不能使用navigatTo()
。在这种情况下,我如何使用navigatTo(当im在DedicatedWorkerGlobalScope中时(,或者如何关闭或停止渲染Web视图来执行此操作?
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}
/>
我使用this.props.navigatTo()
进行导航,它没问题,但在这种情况下,状态不会改变以在此处运行它, 这是我的堆栈导航器:
login: {
screen: Login
},
app: {
screen: App // webview defined here
},
我自己解决问题:)(我应该使用绑定, OnMessage = { this.onMessage.bind (this( } 我只是忘记了...