我有一个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()
答案 0 :(得分:0)
我自己解决问题:))我应该使用bind, OnMessage = {this.onMessage.bind(this)} 我只是忘记了...