Я собираюсь объявить другой навигатор в зависимости от типа пользователя, который известен после входа в систему.
Ниже приведен только пример:
const authNavigator = createStackNavigator({
Login: LoginScreen,
Register: RegisterScreen,
};
const studentNavigator = createStackNavigator({
Home: StudentHomeScreen,
Professors: ProfessorListScreen
});
const professorNavigator = createStackNavigator({
Home: ProfessorHomeScreen,
Students: StudentListScreen
});
const rootNavigator = createSwitchNavigator({
Auth: authNavigator,
App: isStudent ? studentNavigator : professorNavigator,
});
isStudent
будет установлено визбыточное состояние после входа в систему.Я пробовал пару вещей, таких как завершение навигатора Студент / Профессор в компонент реагирования, который принимает состояние избыточности и затем условно отображает его.Но с последним обновлением реагирующей навигации мы не можем отображать несколько навигаторов.Затем я попытался объявить следующее:
const rootNavigator = createSwitchNavigator({
Auth: authNavigator,
StudentHome: studentNavigator,
ProfessorHome: professorNavigator
});
Затем я бы направил в StudentHome / ProfessorHome в зависимости от типа пользователя.Но это не работает, потому что навигатор загружает все экраны, поэтому, если студент входит в систему, также загружаются экраны профессора, что вызывает проблемы, так как состояние избыточности отличается и вызывает неопределенные ошибки.И я также заметил, что lazyLoad был удален из новой версии.
Я просто ищу лучший способ реализовать этот вариант использования.