【问题标题】:react native router flux: override android hardware back key反应本机路由器通量:覆盖android硬件后退键
【发布时间】:2016-12-07 10:04:36
【问题描述】:

目前,当我按下android硬件返回键时,react路由器flux会调用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;
    });
  };

【问题讨论】:

  • 在场景 C 按下返回按钮的同时,尝试从“路线”中删除场景 B。

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


【解决方案1】:

根据BackAndroid docs

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

所以在特定场景中你可以添加一个 BackAndroid 监听器,在这个监听器中做任何你想做的事并返回 true;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2017-03-24
    • 1970-01-01
    相关资源
    最近更新 更多