反应导航堆栈中的元素数量

问题描述 投票:0回答:1

我想检查我的反应导航堆栈中的元素数量。如果仅剩一个屏幕,并且用户按下后退按钮,则应用程序向他们显示一条消息以退出该应用程序。我必须在所有屏幕上都使用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 }));
    }
react-native react-navigation
1个回答
0
投票

[当您使用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
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.