我想检查我的反应导航堆栈中的元素数量。如果仅剩一个屏幕,并且用户按下后退按钮,则应用程序向他们显示一条消息以退出该应用程序。我必须在所有屏幕上都使用BackHandler,因为我没有找到可以在堆栈中显示元素的属性。这是我的路线
const route1= {
screen1,
screen2
};
const route2= {
screen3,
screen4
};
export const stack1= createStackNavigator(route1);
export const stack2= createStackNavigator(route2);
export default {stack1, stack2};
这是我的导航器
createNavigator = (routeName, params) => {
this.navigator = createAppContainer(createSwitchNavigator(routes, { initialRouteName: routeName, initialRouteParams: params }));
}
[当您使用createStackNavigator使用react-navigation时,您只能在initialRouteName
屏幕内添加backHandler控件,但是您需要添加一个eventListener来检查您正在观看的屏幕是否实际上是焦点所在的屏幕,否则它也会在您的其他屏幕中触发
如果不是这种情况,要检查堆栈的长度,可以在屏幕内部简单地使用导航道具进行检查:
handleBackPress=()=>{
if(this.props.navigation.state.routes.length===1){
//do what you need
return true
}
else {
this.props.navigation.pop(1)
return true
}
}