我正在开发一个问答游戏,我使用react-navigation来处理导航,我有3个组件,(newGame,问题,结果)如果没有,我不希望用户从结果页面返回到问题。问题已经用尽,但是,按后退按钮(Android 硬件)将使他回到问题。然后我尝试像这样处理硬件后退按钮:
componentWillMount() {
this.props.gameState(true);
BackHandler.addEventListener('hardwareBackPress', () => {
if (this.props.gamePlaying) { // Currently set to true. I will set it to false again on NewGame Page.
this.props.navigation.navigate('NewGame');
}
});
}
然而,这会将用户带到 NewGame 屏幕,但会立即弹回到结果页面,因为它也会立即在 NewGame 页面中触发导航/返回。这再次将其带回到结果页面。
可能修复吗?
我想在进入 NewGame 组件页面后停止后退按钮的触发。有办法做到吗?
我的环境
反应导航 = ^1.0.0-beta.11
反应本机 = 0.44.0
你需要返回true
表明您自己处理了后退按钮,如您在docs https://facebook.github.io/react-native/docs/backhandler.html.
如果一个订阅返回 true,那么之前注册的订阅将不会被调用
您的代码应如下所示:
componentWillMount() {
this.props.gameState(true);
BackHandler.addEventListener('hardwareBackPress', () => {
if (this.props.gamePlaying) {
this.props.navigation.navigate('NewGame');
return true; // This will prevent the regular handling of the back button
}
return false;
});
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)