【问题标题】:BackHandler is not working in react-native side-menu when using react-native router-flux使用 react-native router-flux 时,BackHandler 在 react-native 侧面菜单中不起作用
【发布时间】:2019-04-17 00:06:56
【问题描述】:

我正在使用 react-native 开发示例应用程序。我在 react-native 侧边菜单组件中使用 backHandler 时遇到了一个问题。

实际上,侧边菜单包含更多页面!但是当点击侧面菜单页面中的 Android 后退按钮时,只有一次后退处理程序起作用。这里我使用的是 react-native router-flux。

这里的后退按钮动作只被调用一次!

这是我的代码:

componentDidMount() {
    BackHandler.addEventListener('hardwareBackPress', this.handleBackPress);
}

componentWillUnmount() {
    BackHandler.removeEventListener('hardwareBackPress', this.handleBackPress);
}

handleBackPress = () => {
    let {isGoback} = this.props.isGoback
    //alert("Hi " + isGoback)

    if(isGoback === "Contact Us"){
        //alert("Hi: " + isGoback)
        Actions.BasicSideMenuMain({selectedItem:'Home'});
        //Actions.replace('BasicSideMenuMain')
    }
}

【问题讨论】:

  • 你说的“一旦后面的处理函数调用这里主屏幕是Home”是什么意思?你能解决它吗(通过编辑你的问题,而不是在 cmets 中回复)?
  • 嗨,我不太清楚这个

标签: react-native react-native-android react-native-navigation react-native-router-flux


【解决方案1】:

我遇到了同样的问题,我就是这样解决的: 当您使用 router-flux 时,您可以使用 Actions.currentScene 来查找您所在的页面

handleBackPress = () => {
        if(Actions.currentScene === 'mainPage'){   // 'mainPage' is kay of your scene
            BackHandler.exitApp();  // or anything you want
            return false;
        } 
        Actions.pop();  // for all the pages beside mainPage in side menu always go back
        return true;
    }

希望它有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多