#reactjs #react-native #authentication #navigation #stack-navigator
#reactjs #react-native #аутентификация #навигация #стек-навигатор
Вопрос:
В настоящее время мой код застрял в верхней части главного экрана. Тем не менее, я хотел бы позволить вам перейти на главный экран, когда я нажимаю кнопку входа в систему на экране входа в систему. Я надеюсь, что здесь нет навигации по верхним или нижним вкладкам на экране входа в систему.
Ниже приведен мой код. Вход в систему — это импорт частей экрана.
Пожалуйста, помогите мне.
app.js
export default function App() {
return (
<AuthContext.Provider value={authContext}>
<NavigationContainer>
<Tab.Navigator
screenOptions={({ route }) => ({
tabBarIcon: ({ focused, color, size }) => {
let iconName;
if (route.name === 'Home') {
iconName = focused ? 'ios-home' : 'ios-home-outline';
} else if (route.name === 'Purchase') {
iconName = focused ? 'ios-list-circle' : 'ios-list';
} else if (route.name === 'Wish List') {
iconName = focused ? 'ios-star' : 'ios-star-outline'
}
// You can return any component that you like here!
return <Ionicons name={iconName} size={size} color={color} />;
},
})}
tabBarOptions={{
activeTintColor: '#32cd32',
inactiveTintColor: 'gray',
}}
>
<Tab.Screen name="Home" component={HomeStackScreen} />
<Tab.Screen name="Wish List" component={WishListStackScreen} />
<Tab.Screen name="Purchase" component={PurchaseStackScreen} />
</Tab.Navigator>
</NavigationContainer>
</AuthContext.Provider>
);
};
Комментарии:
1. См . reactnavigation.org/docs/auth-flow /. …. Вместо вложенного компонента входа в систему условно добавьте Login в Stack.Navigator
2. @Hariks Когда я ссылаюсь на документы, там говорится, что если я хочу использовать навигацию по нажатию и навигацию по нижней вкладке вместе, создайте контейнер с навигацией по нажатию, а затем вставьте экран стека со значением компонента. Итак, я создал код с такой структурой. Что мне здесь делать?
Ответ №1:
Я считаю, что сначала вам следует создать навигатор стека в app.js с экраном входа в систему и домашней страницей в стеке:
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Login" component={Login} />
<Stack.Screen name="Home" component={Home} />
</Stack.Navigator>
</NavigationContainer>
Когда вы нажимаете кнопку на экране входа в систему, вы должны сделать это, когда пользователь аутентифицируется:
<Button onPress={() => {navigation.navigate('Home')}}
Затем на главной странице вы должны добавить tabnavigator
Комментарии:
1. Если вы посмотрите на мой код, я использую экран стека и экран вкладок вместе. Я вставил экран стека в качестве компонента экрана вкладок. Мне нужен экран входа в систему без экрана вкладок и экрана стека.
2. Я знаю об этом, но если вы не хотите, чтобы на странице входа в систему был навигатор вкладок, сначала вам следует создать навигатор стека, как я показал вам выше (чтобы перейти к экрану входа в систему), затем нажмите кнопку перейти на главную страницу и добавьте tabnavigator на свою домашнюю страницу
3. Большое вам спасибо за ваш ответ. Однако, если я добавлю код, который вы мне указали, появится сообщение об ошибке, что навигатор вкладок и навигатор стека нельзя использовать вместе.
4. вы не можете использовать together действительно, вот почему вам нужен навигатор стека в app.js файл и навигатор вкладок на вашей домашней странице
5. Я решил это! Я изменил структуру, как вы сказали.