React-native-router-flux: 问题:场景特定的后退按钮行为 [Android]

创建于 2016-09-06  ·  3评论  ·  资料来源: aksonov/react-native-router-flux

在我安装的当前版本(3.35.0)中,可以为Router分配自定义backButtonHandler #$ 。 虽然这很有用,但我的应用程序需要在某些屏幕中自定义行为。

在以前的版本中,我曾经有一个全局BackAndroid事件监听器,它使用Actions.currentRouter.stack从导航堆栈中获取当前位于前台的组件。 在组件的原型链中,我有一个处理自定义行为的onBackButton()方法。

新的 Action API 没有暴露 currentRouter。 我可以在每个组件中addEventListenerremoveEventListenercomponentWillUnmount 。 但是,有没有更清洁的方法来实现这一目标?

如果没有,我建议我们要么:

  1. Scene API 中有backButtonHandler属性。
  2. 将一些额外的参数(如 currentComponent)传递给后退按钮处理程序的调用。

你们有什么感想?

版本

  • 反应本机路由器通量 - 3.35.0
  • 反应原生 0.28.0

最有用的评论

您应该将 RN 升级到 0.32。

有了这个,您可以拥有大多数场景的全局处理程序。 对于那些特殊的场景,你可以在其中添加BackAndroid.addEventListener('hardwareBackPress', this.handleAndroidBack) ,RN会先调用后面的监听回调,如果你在后面的监听回调中添加return true ,则不会调用全局handler。 我认为这是一个更好的解决方案。 只要记住删除侦听器回调即可。

所有3条评论

删除了这篇文章的内容,为You are already in the root scene制作了一个单独的问题并将其放在那里。

嘿,我遇到了同样的问题,似乎使用 componentWillUnmount 方法删除事件处理程序不适用于这个库,你找到其他解决方案了吗?

您应该将 RN 升级到 0.32。

有了这个,您可以拥有大多数场景的全局处理程序。 对于那些特殊的场景,你可以在其中添加BackAndroid.addEventListener('hardwareBackPress', this.handleAndroidBack) ,RN会先调用后面的监听回调,如果你在后面的监听回调中添加return true ,则不会调用全局handler。 我认为这是一个更好的解决方案。 只要记住删除侦听器回调即可。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

VictorK1902 picture VictorK1902  ·  3评论

booboothefool picture booboothefool  ·  3评论

xnog picture xnog  ·  3评论

maphongba008 picture maphongba008  ·  3评论

fgrs picture fgrs  ·  3评论