Можете ли вы определить навигаторы по типу пользователя и условно объявить их в корневом навигаторе? - PullRequest
0 голосов
/ 23 мая 2018

Я собираюсь объявить другой навигатор в зависимости от типа пользователя, который известен после входа в систему.

Ниже приведен только пример:

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 был удален из новой версии.

Я просто ищу лучший способ реализовать этот вариант использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...