我有一个React Native应用程序,其中使用了react native路由器流量,我的场景就这样
最初,在加载应用程序后,一切都会顺利进行。但是,当我单击仪表板图标时,它将导航到“通知”屏幕,当我按Android后退按钮时,由于我已编写BackHandler并在其中编写了Actions.pop()
,它会转到“仪表板”屏幕。现在在仪表板中,我已经编写了带有检查计数的BackHandler,即如果两次按下“后退”按钮并使其退出应用程序,但问题是,只有当我没有导航到“通知”屏幕时,它才起作用。通知屏幕,然后按返回按钮,它导航到仪表板,但是当我再次按仪表板上的返回按钮时,它只是使我导航到登录屏幕,然后从那里导航到启动屏幕。
我想要的是即使我导航到“通知”屏幕,然后按后退按钮,我也应该导航到仪表板,然后在仪表板上的后退按钮上单击(两次),它应该退出应用程序而不重定向到登录和启动屏幕。
我的代码就是通过这种方式显示在仪表板屏幕上的-
constructor(props) {
super(props);
this.backCount = 0;
this.onHandleBackButton = this.handleBackButton.bind(this);
}
async componentWillMount() {
BackHandler.addEventListener('hardwareBackPress', this.onHandleBackButton);
}
handleBackButton() {
console.log("back button - dashboard")
if (this.backCount == 1) {
BackHandler.exitApp();
this.backCount = 2;
return; // exit
}
else if (this.backCount == 0) {
Toast.show("Press again to exit", Toast.SHORT);
this.backCount++;
setTimeout(() => {
if (this.backCount != 2)
this.backCount = 0;
}, 2000)
return true;
}
}
“通知代码”屏幕-
constructor(props) {
super(props);
this.onHandleBackButton = this.handleBackButton.bind(this);
}
componentWillMount() {
BackHandler.addEventListener('hardwareBackPress', this.onHandleBackButton);
}
handleBackButton() {
Actions.pop();
return true;
}
我也尝试了几种使用type = {ActionConst.RESET}的方法以及其他方法。
答案 0 :(得分:0)
您要做的第一件事是导航并清除启动画面和登录屏幕。因为当前正在发生的是弹出屏幕,并且启动和登录已经在堆栈中。其次,在仪表板中放置一个检查条件,如果routname是您的仪表板,则只有双出口条件应执行其余操作,否则它将不起作用。我认为它将起作用。