在我安装的当前版本(3.35.0)中,可以为Router
分配自定义backButtonHandler
#$ 。 虽然这很有用,但我的应用程序需要在某些屏幕中自定义行为。
在以前的版本中,我曾经有一个全局BackAndroid
事件监听器,它使用Actions.currentRouter.stack
从导航堆栈中获取当前位于前台的组件。 在组件的原型链中,我有一个处理自定义行为的onBackButton()
方法。
新的 Action API 没有暴露 currentRouter。 我可以在每个组件中addEventListener
和removeEventListener
上componentWillUnmount
。 但是,有没有更清洁的方法来实现这一目标?
如果没有,我建议我们要么:
Scene
API 中有backButtonHandler
属性。你们有什么感想?
删除了这篇文章的内容,为You are already in the root scene
制作了一个单独的问题并将其放在那里。
嘿,我遇到了同样的问题,似乎使用 componentWillUnmount 方法删除事件处理程序不适用于这个库,你找到其他解决方案了吗?
您应该将 RN 升级到 0.32。
有了这个,您可以拥有大多数场景的全局处理程序。 对于那些特殊的场景,你可以在其中添加BackAndroid.addEventListener('hardwareBackPress', this.handleAndroidBack)
,RN会先调用后面的监听回调,如果你在后面的监听回调中添加return true
,则不会调用全局handler。 我认为这是一个更好的解决方案。 只要记住删除侦听器回调即可。
最有用的评论
您应该将 RN 升级到 0.32。
有了这个,您可以拥有大多数场景的全局处理程序。 对于那些特殊的场景,你可以在其中添加
BackAndroid.addEventListener('hardwareBackPress', this.handleAndroidBack)
,RN会先调用后面的监听回调,如果你在后面的监听回调中添加return true
,则不会调用全局handler。 我认为这是一个更好的解决方案。 只要记住删除侦听器回调即可。