react-native - 使用 react-native router-flux 时,BackHandler 在 react-native 侧菜单中不起作用

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

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

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

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

这是我的代码:

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')
    }
}

最佳答案

我遇到了同样的问题,这就是我解决它的方法:
当您使用 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;
    }

希望它有效。

关于react-native - 使用 react-native router-flux 时,BackHandler 在 react-native 侧菜单中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53293178/

相关文章:

reactjs - undefined 不是评估 NativeReactModules.startApp 的对象

react-native - 如何在 React Native 中的应用程序启动器图标上显示通知计数?

reactjs - ListView 和 FlatList 有什么区别?

react-native-android - 在React Native Android应用中如何将 'adjustPan'和 'adjustResize'都用于 'windowSoftInputMode'

javascript - react native如何知道API响应的Content-Type

android - 找不到导航对象。您的组件是否在导航器的屏幕内?

javascript - 在 React Native 中使用 prop 启动计时器

react-native - 上传至 EAS 版本 : Error: Request failed: 403 (Forbidden)

react-native - React Native 应用程序崩溃而没有任何错误日志