1

現在、Android ハードウェアの戻るキーを押すと、反応ルーター フラックスが Actions.pop() メソッドを呼び出します。別のシーンにジャンプしたいので、前のシーンに戻るのを防ぐメソッドを呼び出すのを防ぐ方法はありますか。例 シーンAからシーンB、シーンBからシーンC、シーンCで戻るキーを押すとシーンAに行きたい。

componentWillMount() {
    // Disable back button by just returning true instead of Action.pop()
    BackAndroid.addEventListener('hardwareBackPress', () => {
      return true;
    });
  };
4

1 に答える 1

0

BackAndroidのドキュメントによると:

ハードウェアの [戻る] ボタンの押下を検出し、リスナーが存在しない場合、またはいずれのリスナーも true を返さない場合は、プログラムで既定の [戻る] ボタン機能を呼び出してアプリを終了します。イベント サブスクリプションは逆の順序 (つまり、最後に登録されたサブスクリプションが最初) で呼び出され、1 つのサブスクリプションが true を返すと、以前に登録されたサブスクリプションは呼び出されません。

したがって、特定のシーンで BackAndroid リスナーを追加し、このリスナーで必要なことを実行して true を返すことができます。

言及する価値のあるもう 1 つのことは、componentWillMount にイベント リスナーを追加することです。
ルーターがこのコンポーネントの子孫の子である場合、これは、ルーターがマウントされる前に back イベントに登録することを意味します。そのため、ルーター リスナーはリスナーの後に登録され、リスナーの前に呼び出されます。
代わりに、ComponentDidMount のイベントに登録してみてください。このメソッドは、ルーターがマウントされ、そのリスナーが登録された後に呼び出されます。

于 2016-12-07T10:12:57.403 に答える