簡體   English   中英

React Navigation 如何傳遞到 Tab 導航器表單登錄屏幕?

[英]React Navigation How to pass to Tab navigator form Login Screen?

我有一個路由器類。 而且,我有一個登錄屏幕。 登錄屏幕后,我想通過選項卡導航器頁面。

這是我的登錄頁面

<Login.Navigator
  screenOptions={{
    headerShown: false
  }}
>
  <Login.Screen name="Initial" component={Initial} />
</Login.Navigator>;

這是我的 app.js

export default class App extends React.Component {
  render() {
    return (
      <NavigationContainer>
        <Tab.Navigator
          tabBarOptions={{
            activeBackgroundColor: "#212A39",
            inactiveBackgroundColor: "#212A39"
          }}
          initialRouteName={"MainMenuTab"}
        >
          <Tab.Screen
            name="MessagesTab"
            component={MessagesStackScreen}
            options={{
              tabBarLabel: ({ focused, color }) => (
                <TabLabel title={"messages"} focused={focused} />
              ),
              tabBarIcon: ({ focused, color, size }) => (
                <TabIcon
                  images={"messages"}
                  focused={focused}
                  iconName={"messages"}
                />
              )
            }}
          />
          <Tab.Screen
            name="MainMenuTab"
            component={MainMenuStackScreen}
            options={{
              tabBarLabel: ({ focused, color }) => (
                <TabLabel title={"Home"} focused={focused} />
              ),
              tabBarIcon: ({ focused, color, size }) => (
                <TabIcon
                  images={"mainMenu"}
                  focused={focused}
                  iconName={"mainMenu"}
                />
              )
            }}
          />
          <Tab.Screen
            name="ProfileTab"
            component={ProfileStackScreen}
            options={{
              tabBarLabel: ({ focused, color }) => (
                <TabLabel title={"messages"} focused={focused} />
              ),
              tabBarIcon: ({ focused, color, size }) => (
                <TabIcon
                  images={"profile"}
                  focused={focused}
                  iconName={"profile"}
                />
              )
            }}
          />
        </Tab.Navigator>
      </NavigationContainer>
    );
  }
}

這怎么可能。 它的架構是什么?

你可以這樣使用

<NavigationContainer>
     <Stack.Navigator>
       {Store.userToken == null ? (
         <Stack.Screen name="Login" component={LoginStackScreen} options={{ headerShown: false }} />
       ) : (
           <Stack.Screen name="MainTabNavigator" component={MainTabNavigator} options={{ headerShown: false }} />)}
     </Stack.Navigator>
</NavigationContainer>

然后你必須創建堆棧

function LoginStackScreen() {
  return (
    <LoginStack.Navigator initialRouteName={"Initial"}>
      <LoginStack.Screen name="Initial" component={Initial} options={{ headerShown: false }} />
    </LoginStack.Navigator>
  );
}

你應該使用開關導航器

我就是這么用的;

const InitialNavigator = createSwitchNavigator(
{
  Login: LoginPage, // imported login page
  App: BottomTabNavigator //created by createBottomTabNavigator()
});

export default createAppContainer(InitialNavigator);

當您的登錄過程成功時,像這樣導航到應用程序;

this.props.navigation.navigate('App',{user: loggedInUser}); // user is navigation prop

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM