Stack Navigator内的ReactNative- Tab Navigator

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

需要在注册模块后显示主页模块的选项卡使用React导航

仅具有堆栈屏幕的工作代码

const Stack = createStackNavigator();
const Bottom = createBottomTabNavigator();
render() {
        return (
            <NavigationContainer>
              <Stack.Navigator initialRouteName="Welcome" headerMode='none' >
                <Stack.Screen name="Welcome" component={WelcomeScreen} 
                    options={{
                        title: '',
                        headerBackTitleVisible: false,
                        headerBackTitle: '',
                        headerShown: true
                      }}
                 />
                <Stack.Screen name="Login" component={LoginScreen} />
                <Stack.Screen name="Signup" component={SignupScreen} />
                <Stack.Screen name="ResetPassword" component={ResetPasswordScreen} />
              </Stack.Navigator>
            </NavigationContainer>
          );
    }

需要从SigninScreen按钮显示选项卡标签1:资讯主页:标签2:个人资料

尝试代码:

<Bottom.Navigator initialRouteName="Dashboard" >
                        <Bottom.Screen name="Dashboard" component={TabDashboard} />
                        <Bottom.Screen name="Profile" component={TabProfile} />
                    </Bottom.Navigator>

现在,我需要将这两个代码块组合在一起,以便可以导航到选项卡选项卡屏幕将具有更多导航

react-native react-navigation react-native-ios
1个回答
0
投票

想法是将选项卡屏幕包装在组件内部,并有条件地将其添加到堆栈中。

const HomeScreen = () =>{
 return (
   <Bottom.Navigator initialRouteName="Dashboard" >
    <Bottom.Screen name="Dashboard" component={TabDashboard} />
     <Bottom.Screen name="Profile" component={TabProfile} />
   </Bottom.Navigator>
 );
}

您的堆栈应按以下所示进行更改

<NavigationContainer>
      <Stack.Navigator initialRouteName="Welcome" headerMode="none">
        !isSingedIn?
        {<>
            <Stack.Screen
              name="Welcome"
              component={WelcomeScreen}
              options={{
                title: '',
                headerBackTitleVisible: false,
                headerBackTitle: '',
                headerShown: true,
              }}
            />
            <Stack.Screen name="Login" component={LoginScreen} />
            <Stack.Screen name="Signup" component={SignupScreen} />
            <Stack.Screen
              name="ResetPassword"
              component={ResetPasswordScreen}
            />
          </>
        }:{
          <>
            <Stack.Screen name="ResetPassword" component={HomeScreen} />
            }:
          </>
        }
      </Stack.Navigator>
    </NavigationContainer>

IsSignedIn可以是状态变量,也可以是存储登录状态的变量

您可以参考身份验证流程https://reactnavigation.org/docs/auth-flow

© www.soinside.com 2019 - 2024. All rights reserved.