У меня проблема с созданием потока аутентификации моего приложения. То, что я на самом деле хочу, - это навигация пользователей в зависимости от их роли.
По умолчанию я создал AuthStack, который по сути является stackNavigator и имеет страницу входа. Когда пользователь входит в систему, мы получаем роль пользователя через сетевой запрос. Затем я перехожу к нему на простую домашнюю страницу, которая не возвращает ничего, кроме switchNavigator, основываясь на его роли. Вот код для большей ясности.
const AuthStack = createStackNavigator({
Login: {
screen: Login
},
SignUp: {
screen: SignUp
},
Home: {
screen: Home
}
},
{
initialRouteName: 'Login',
headerMode: 'none'
});
const AppContainer = createAppContainer(AuthStack);
const Navigation = () => {
return <AppContainer />
}
Когда пользователь входит в систему, я перенаправляю его на главный экран, показанный в вышеупомянутом стеке. Вот код на главном экране:
const Home = (props) => {
const AppContainer = createAppContainer(RootNavigator(props.user.role))
return <AppContainer />
}
Здесь я создаю новый контейнер приложения (что может быть плохой практикой, советуйте, пожалуйста). А RootNavigator - это вспомогательная функция, которая возвращает switchNavigator:
export const RootNavigator = (user) => {
return createSwitchNavigator({
Admin: {
screen: AdminDrawerNavigator
},
Reporter: {
screen: ReporterDrawerNavigator
}
},
{
initialRouteName: user === 'admin'? 'Admin': 'Reporter'
})
}
Все это работает нормально, но кажется, что switchNavigator не работает должным образом. Если я нажму кнопку возврата оборудования, она вернется на страницу входа. Спасибо за уделенное время. Пожалуйста, предложите возможное решение.