1

我正在使用反应导航 v5,我正在尝试在 routes.js 中创建一个默认的 android 后退按钮处理程序。使用通量有 backAndroidHandler 参数可以让你做到这一点。我的问题是我可以在导航 v5 中使用的东西。

我知道有https://reactnavigation.org/docs/custom-android-back-button-handling/。但问题是我不想去每个屏幕并设置它。

目前的解决方案是这样的:

  useEffect(
    useCallback(() => {
      const onAndroidBack = () => {
      };

      BackHandler.addEventListener('hardwareBackPress', onAndroidBack);

      return () =>
        BackHandler.removeEventListener('hardwareBackPress', onAndroidBack);
    }, [])
  );

我的问题是,navigation v5 是否有某种解决方案,就像 Flux 那样?有没有更好的方法来管理android后退按钮?

4

1 回答 1

1

文档在您的链接中的解决方案似乎是最好的选择,但我发现缺少一步。

您可以ScreenWithCustomBackBehavior返回其子项,使其成为容器而不是组件。然后将其包裹在您需要自定义的每个屏幕上似乎并不过分。这个解决方案真的是如果你需要它发生在焦点上。如果您需要一个全局 android 后退按钮侦听器,您可以在应用的顶层注册它。

无论普遍同意的解决方案是什么,它很可能都采用容器的形式(如ScreenWithCustomBackBehavior)或在顶层注册侦听器。

于 2021-02-01T20:08:22.847 回答