2017-07-18 11 views
2

私はこのコードを私の各画面に持っています。アンドロイドの戻るボタンを押すと1画面に戻ります。もう一度アンドロイドのバックボタンを押しても何もしません。期待される結果は、スタック内にさらに多くの画面がある限り元の状態に戻ることです。何が欠けている?BackHandlerは1つ以上の画面に戻ることはありません

componentWillMount() { 
    BackHandler.addEventListener('hardwareBackPress',() => { 
     this.props.navigation.goBack(); 
     return true; 
    }); 
} 

componentWillUnmount() { 
    BackHandler.removeEventListener('hardwareBackPress') 
} 

答えて

4

いくつかの試行錯誤の後、このコードは期待どおりに動作します。初期のコードが実際にイベントリスナーを削除していなかったと思います。

componentWillMount() { 
    BackHandler.addEventListener('hardwareBackPress', this.backPressed); 
} 

componentWillUnmount() { 
    BackHandler.removeEventListener('hardwareBackPress', this.backPressed); 
} 

backPressed =() => { 
    this.props.navigation.goBack(); 
    return true; 
} 
+0

エラーメッセージ「未定義のプロパティのナビゲーションを読み取っています」が表示されます。何が問題なの? –

+0

反応ナビゲーションを使用している場合は、ドキュメント内にあるように反応ナビゲーションを設定してください。 https://reactnavigation.org/docs/guides/redux#Handling-the-Hardware-Back-Button-in-Android –

関連する問題