簡體   English   中英

從Webview導航到React本機頁面

[英]navigate to a react native page from webview

我有一個使用webView呈現html代碼的react native應用程序,我使用postmessage在它們之間進行通信。 webview將發送消息以響應本機打開另一個響應本機頁面(例如,發送消息“打開登錄頁面”),因此我將在onMessage(事件)中接收它,然后當我想使用this.props.navigateTo時說“可以無法讀取未定義的屬性navigationTo”。 我使用console.log(this)並理解'this'是DedicatedWorkerGlobalScope ,我不能使用navigatTo() 在這種情況下(當我在DedicatedWorkerGlobalScope中時,我該如何使用navigatTo?)如何關閉或停止渲染Webview來做到這一點?

  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:

  <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()進行導航,並且可以,但是在這種情況下,狀態不會改變,可以在此處運行,這是我的stacknavigator:

  login: {
        screen: Login
    },
    app: {
        screen: App  // webview defined here
    },

我自己解決了問題:))我應該使用bind,OnMessage = {this.onMessage.bind(this)}我只是忘記了...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM