#javascript #reactjs #react-native #react-navigation
#javascript #reactjs #react-native #react-навигация
Вопрос:
итак, у меня есть стек AuthStack
с таким именем
const AuthStack = ({ resetPassword, updateEmail }: any) => (
<Stack.Navigator
screenOptions={{
cardStyle: { backgroundColor: '#F2F1F7' },
headerShown: true,
headerTitle: '',
}}
>
{resetPassword ? (
<Stack.Screen name="Reset Password">{(props: any) => <ResetPassword />}</Stack.Screen>
) : updateEmail ? (
<Stack.Screen name="Update Email">{(props: any) => <UpdateEmail />}</Stack.Screen>
) : (
<Stack.Screen name="Home">{(props: any) => <Home />}</Stack.Screen>
)}
</Stack.Navigator>
)
было бы неплохо узнать, правильно ли это сделать. но, по сути, на странице моей учетной записи у меня есть ссылки для сброса пароля и обновления электронной почты. Я поместил оба этих параметра в AuthStack, поскольку не был уверен, что это лучшее место. в любом случае, это работает, однако, если я нажму «обновить электронную почту» и перейду туда, если я затем решу, что на самом деле хочу перейти на другую страницу и перейти, если я затем вернусь, нажав «Домой», я все равно перейду на страницу обновления электронной почты. хотя на данный момент я действительно хочу показать главный экран. кроме того, если я нажму на home, пока он активен, он не приведет меня туда. это означает, что я больше никогда не смогу увидеть свою домашнюю страницу.
итак, мне было интересно, есть ли какой-то слушатель, который при переходе с этой страницы всегда будет показывать мне Home по умолчанию?
есть идеи? и я не хочу показывать сброс пароля / обновление электронной почты, поскольку есть собственные вкладки, поэтому они скрываются под home. есть ли лучший подход для этого?
Ответ №1:
Я действительно не знаю, почему вы условно отображаете экраны, я думаю, вы неправильно используете name. Вы должны перемещаться как navigation.navigate(‘ForgotPassowrd’) (название экрана). Он продолжает показывать вам обновленную электронную почту, потому что Home не существует.
export const AuthNavigator = () => {
return (
<Stack.Navigator headerMode='none'>
<Stack.Screen name='Home' component={SignupContainer}></Stack.Screen>
<Stack.Screen name='ForgotPassword' component={ForgotPasswordContainer}></Stack.Screen>
<Stack.Screen name='Update Email' component={UpdateEmailContainer}></Stack.Screen>
</Stack.Navigator>
);
};