反应导航堆栈中的元素数

Posted

技术标签:

【中文标题】反应导航堆栈中的元素数【英文标题】:number of elements in react navigation stack 【发布时间】:2020-02-06 20:52:31 【问题描述】:

我想检查我的量。如果只剩下一个屏幕并且用户按下后退按钮,应用程序会向他们显示一条消息以退出应用程序。我必须在所有屏幕中使用 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 ));
    

【问题讨论】:

【参考方案1】:

当您使用 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
   

【讨论】:

以上是关于反应导航堆栈中的元素数的主要内容,如果未能解决你的问题,请参考以下文章

从嵌套屏幕导航到不同选项卡堆栈中的另一个嵌套屏幕(反应导航)

从反应原生底部选项卡导航器的标题导航

反应导航堆栈共享导航选项

返回上一个屏幕时执行 useQuery() 挂钩反应原生堆栈导航器

Tab.Navigation 中的道具反应导航不起作用

反应导航5从堆栈导航器中隐藏标签栏