React-navigation StackNavigator рендеринг на конкретный экран

Как я могу отобразить Stack Navigator с React-navigation на конкретный экран? Могу ли я передать экранное имя в качестве опоры для отображения StackNavigator на этом экране при начальной загрузке?

ОБНОВЛЕНИЕ: я решил это, передав опору в Stack Navigator, а затем условно установив intialRouteName:

const Main = RootNavigator(userLoggedIn);

затем визуализируйте Main как <Main /> вместо RootNavigator напрямую.

Затем внутри кода навигатора:

export const RootNavigator = (userLoggedIn= false) => {
  return StackNavigator(
    {
      LoggedIn: {
        screen: LoggedIn,
      },
      LoggedOut: {
        screen: LoggedOut,
      }
    },{
      initialRouteName: userLoggedIn? "LoggedIn" : "LoggedOut"
    }
  );
}; 

person jasan    schedule 15.06.2017    source источник
comment
Ознакомьтесь с примерами и документами reactnavigation.org   -  person TomTom    schedule 15.06.2017
comment
Бесполезный ответ.   -  person jasan    schedule 15.06.2017
comment
Вам нужно добавить более подробную информацию о вашем коде. Где это определяется? Что получает ваша опора / состояние? Являются ли эти разные экраны отдельными компонентами? Вы используете Redux или другой контейнер состояний? Есть разные способы справиться с этим, поэтому вы должны быть более конкретными.   -  person Michael Cheng    schedule 15.06.2017
comment
Почему вы установили для userLoggedIn значение false?   -  person Paras Watts    schedule 12.08.2017
comment
Я реализую то же самое, но не могу передать LoginValue   -  person Paras Watts    schedule 12.08.2017
comment
Это новая функция es6, которую я использовал для установки значения по умолчанию для userLoggedIn на случай, если ничего не передается.   -  person jasan    schedule 12.08.2017
comment
Как вы получаете значение userLoggedIn, я использовал асинхронное хранилище для получения локального состояния, но не могу передать это значение в RootNavigator, значения всегда не определены   -  person Paras Watts    schedule 14.08.2017
comment
Я использую firebase для аутентификации, изначально пользователь будет неопределенным, поскольку метод аутентификации является асинхронным. из-за природы async значение userLoggedIn изначально не определено. Чтобы решить эту проблему, я установил для него значение по умолчанию как false. и когда firebase возвращает значение (истина или ложь).   -  person jasan    schedule 14.08.2017


Ответы (1)


Да, когда вы инициализируете свой StackNavigator, вторые параметры - это параметры. Итак, вы можете:

StackNavigator({ <Your-Routes> }, { initialRouteName: 'MyFirstPage' });
person Antoine Grandchamp    schedule 15.06.2017
comment
Я уже знаю, что могу установить IntialRouteName в моем StackNavigator, но я хочу сделать это intialRoutename Dynamic, в зависимости от некоторой опоры. то есть ЕСЛИ я вошел в систему, я хочу показать screenA в навигаторе, и если я выйду, то покажите screenB - person jasan; 15.06.2017