反应原生路由器通量:覆盖android硬件返回键

时间:2016-12-07 10:04:36

标签: reactjs react-native react-native-router-flux

目前,当我按下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;
    });
  };

1 个答案:

答案 0 :(得分:0)

根据BackAndroid docs

  

检测硬件后退按钮,如果没有侦听器或者没有任何侦听器返回true,则以编程方式调用默认后退按钮功能以退出应用程序。事件订阅以相反的顺序调用(即,最后一次注册的订阅),如果一个订阅返回true,则不会调用先前注册的订阅。

因此,在特定场景中,您可以添加BackAndroid侦听器,在此侦听器中执行您想要的操作并返回true;

另一件值得一提的是,您在componentWillMount中添加了事件监听器 如果路由器是该组件的后代子节点,这意味着您在安装路由器之前注册了后台事件,因此路由器侦听器将在您的侦听器之后注册,因此将在您的侦听器之前调用。 尝试在ComponentDidMount中注册事件。在安装路由器并注册其侦听器后调用此方法。