2017-11-13 14 views
0

私はまだReact-Nativeの新人です。goBack機能を起動するために私のwebviewにアクセスする方法を理解しようとしています。ユーザーがAndroid搭載端末の「戻る」ボタンを押したときに表示されます。ここでは未定義です( '_this.webview.goBack()'を評価しています)

は何ですか( '_this.webview.goBackを()' を評価)関数ではありません、私は

constructor(props){ 
    super(props); 
} 

componentDidMount() { 
    BackAndroid.addEventListener('hardwareBackPress', this.backHandler); 
    this.webview.messagesChannel.on('text', function({...})) //this is working 
} 

componentWillUnmount() { 
    BackAndroid.removeEventListener('hardwareBackPress', this.backHandler); 
} 

backHandler =() => { 
    this.webview.goBack(); //this throws and error 
    return true; 
} 

render() { 
    return (
     <View style={styles.parent}> 
      <WebView 
      userAgent={"mobileapp"} 
      source={{uri: url}} style={styles.fullScreen} 
      domStorageEnabled={true} 
      ref={this._refWebView} 
      /> 
     </View> 
    ); 
} 

_refWebView = (webview) => { 
    this.webview = webview; 
} 

を得たものだと私はシミュレータ

未定義に次のエラーを取得しますthis.webviewにアクセスする適切な方法は?

ありがとうございます!

+0

をエラーがこの 'ことを示しています。 webview.goBack'は関数ではないので、 'this.webview'には問題がありません。' this.webview'が参照するものは 'goBack'メソッドを持たないものです。それは本当に意味ですか?それがそうであることを示す文書を指すことができますか?私はReact Nativeをしないので、適切な場所を探しているわけではないかもしれませんが、[私はここにはいません](https://facebook.github.io/react-native/docs/webview.html)。 –

+0

私はこのチュートリアルのhttps://github.com/defining-technology/react-native-backbutton/blob/master/index.android.jsに従いましたが、私が正しい方法で行っているかどうかはわかりませんこの例ではボタンがありますが、バックボタンをwebviewのバック関数にバインドして、できるかどうかわかりません。 –

+0

スキミングをスキップすると、そのチュートリアルで 'goBack'メソッドが期待されているようですウェブビュー。しかし、新しいコールバックフォームではなく "従来の" ref構文も使用されています.1年以上経過していて、古い "ライブ"リンクが壊れています(githubリポジトリに置き換えられました)。 WebViewが変更された可能性はありますか?とにかく、それと幸運! –

答えて

0

WebViewのリファレンスにアクセスするのに間違ったことはありませんでした。

WebViewでrefコールバックに問題があります。 これは複数回呼び出され、時にはref = nullのため、以前に設定した参照this.webviewを上書きする可能性があります。あなたは定義されたのWebViewを取得を確保(これは事実...に起こることになっていません)を修正するには

は、それを設定する前にをREF:

_refWebView = (webview) => { 
    if (!webview) { 
     return; 
    } 
    this.webview = webview; 
} 
関連する問題