React-native-router-flux: 質問:シーン固有の戻るボタンの動作[Android]

作成日 2016年09月06日  ·  3コメント  ·  ソース: aksonov/react-native-router-flux

私がインストールした現在のバージョン(3.35.0)には、 RouterにカスタムbackButtonHandlerを割り当てるためのプロビジョニングがあります。 これは便利ですが、私のアプリでは特定の画面でカスタム動作が必要です。

以前のバージョンでは、グローバルなBackAndroidイベントリスナーがあり、現在フォアグラウンドにあるコンポーネントをActions.currentRouter.stackでナビゲーションスタックから取得していました。 コンポーネントのプロトタイプチェーンには、カスタム動作を処理するonBackButton()メソッドがありました。

新しいアクションAPIでは、currentRouterが公開されていません。 すべてのコンポーネントでaddEventListenerを使用でき、 componentWillUnmountremoveEventListener $を使用できます。 しかし、これを達成するためのよりクリーンな方法はありますか?

そうでない場合は、次のいずれかを提案します。

  1. Scene APIにbackButtonHandlerプロップがあります。
  2. currentComponentのようないくつかの追加の引数を、戻るボタンハンドラーの呼び出しに渡します。

皆さんはどう思いますか?

バージョン

  • react-native-router-flux-3.35.0
  • 反応ネイティブ0.28.0

最も参考になるコメント

RNを0.32にアップグレードする必要があります。

これにより、ほとんどのシーンのグローバルハンドラーを使用できます。 これらの特別なシーンでは、 BackAndroid.addEventListener('hardwareBackPress', this.handleAndroidBack)を追加できます。RNは最初に後のリスナーコールバックを呼び出します。後のリスナーコールバックでreturn trueを使用した場合、グローバルハンドラーは呼び出されません。 私はそれがより良い解決策だと思います。 リスナーのコールバックを削除することを忘れないでください。

全てのコメント3件

この投稿の内容を削除し、 You are already in the root sceneについて別の問題を作成して、そこに配置しました。

ねえ、私は同じ問題を抱えています、そしてcomponentWillUnmountメソッドでイベントハンドラーを削除することはこのライブラリでは機能しないようです、あなたは他の解決策を見つけましたか?

RNを0.32にアップグレードする必要があります。

これにより、ほとんどのシーンのグローバルハンドラーを使用できます。 これらの特別なシーンでは、 BackAndroid.addEventListener('hardwareBackPress', this.handleAndroidBack)を追加できます。RNは最初に後のリスナーコールバックを呼び出します。後のリスナーコールバックでreturn trueを使用した場合、グローバルハンドラーは呼び出されません。 私はそれがより良い解決策だと思います。 リスナーのコールバックを削除することを忘れないでください。

このページは役に立ちましたか?
0 / 5 - 0 評価