首页 > 解决方案 > 在选项卡开关上打开选项卡导航器内的堆栈导航器的初始屏幕,而不是上次访问的屏幕

问题描述

Tab.Navigator
    Tab1-Stack.Navigator (SettingStack)
           -SettingsScreen
           -ProfileScreen
   Tab2-Stack.Navigator (HomeStack)
           -HomeScreen
           -DetailsScreen

我们从 HomeScreen 开始并导航到 DetailsS​​creen。然后我们使用标签栏切换到 SettingsScreen 并导航到 ProfileScreen。在这个序列之后如果你使用标签栏切换回 HomeStack,它会打开 DetailsS​​creen - HomeStack 的导航状态已被保留

但是我想如果用户切换选项卡,那么堆栈的初始屏幕应该打开而不是最后打开的屏幕,如何实现呢?

function App() {
  return (
    <NavigationContainer>
      <Tab.Navigator>
        <Tab.Screen name="First">
          {() => (
            <SettingsStack.Navigator>
              <SettingsStack.Screen
                name="Settings"
                component={SettingsScreen}
              />
              <SettingsStack.Screen name="Profile" component={ProfileScreen} />
            </SettingsStack.Navigator>
          )}
        </Tab.Screen>
        <Tab.Screen name="Second">
          {() => (
            <HomeStack.Navigator>
              <HomeStack.Screen name="Home" component={HomeScreen} />
              <HomeStack.Screen name="Details" component={DetailsScreen} />
            </HomeStack.Navigator>
          )}
        </Tab.Screen>
      </Tab.Navigator>
    </NavigationContainer>
  );
}

标签: react-nativereact-navigation

解决方案


您应该为屏幕名称“第二”实现选项卡项触摸,并将导航弹出到根视图。


推荐阅读