У меня есть собственное приложение, которое использует webView для визуализации HTML-кода, я использовал postmessage для связи между ними.webview отправит сообщение, чтобы реагировать на собственный язык, чтобы открыть другую реагирующую собственную страницу (например, отправить сообщение «открыть страницу входа в систему»), поэтому я получу его в onMessage (событие), а затем, когда я хочу использовать this.props.navigateTo
, он говорит: «не может прочитать»свойство navigateTo из неопределенного '.я использовал console.log(this)
и понял, что 'this' это DedicatedWorkerGlobalScope , что я не могу использовать navigatTo()
.Как я могу использовать navigatTo в этом случае (пока я в DedicatedWorkerGlobalScope) или как я могу закрыть или остановить рендеринг веб-просмотра, чтобы сделать это?
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
},