StackNavigation, как узнать, с какого экрана я перешел?

В настоящее время я использую StackNavigator в моем собственном приложении для реагирования.

У меня есть два экрана, которые переходят на один и тот же экран LoginScreen. Однако, в зависимости от того, с какого экрана я пришел, я хотел бы перейти на разные экраны.

e.g:

ScreenA - ›Экран входа в систему -› ScreenC

ЭкранB - ›Экран входа в систему -› ScreenD

Таким образом, в LoginScreen мне нужно знать, с какого экрана я пришел, чтобы знать, перейти на экран C или D.

Но функция goBack в this.props.navigation - это просто функция, которая возвращает вас к последнему экрану. Он не дает вам идентификатора экрана или способа определить, откуда вы пришли.

У кого-нибудь есть решение этого?

Спасибо


person SwimmingG    schedule 26.10.2017    source источник


Ответы (1)


Экран входа в систему ожидает флаг, назовите его IsScreenA, эта переменная будет поступать с экранов A и B как true илиfalse соответственно. Затем на экране входа в систему перейдите на основе этого флага:

if(this.props.IsScreenA)
   this.props.navigation.navigate("ScreenC")
else
   this.props.navigation.navigate("ScreenD")

Теперь, чтобы вернуться, используйте мой ответ здесь вместе с приведенной выше логикой. Вы должны вызвать LoginScreen, а затем на любом экране передать другой goBack().

Редактировать:

Чтобы передать параметр, вы делаете что-то вроде этого:

С экрана A:

this.props.navigation.navigate("LoginScreen", {IsScreenA: true});

С экрана B:

this.props.navigation.navigate("LoginScreen", {IsScreenA: false});
person Khalil Khalaf    schedule 26.10.2017
comment
Идеально! Думал, будет что-то вроде этого. Как вы добавляете флаг при навигации? Что-то вроде this.props.navigation.navigate ('LoginScreen', true); ? - person SwimmingG; 26.10.2017
comment
Халил, вы, сэр, начальник! Ваше здоровье! - person SwimmingG; 26.10.2017
comment
Рад, что смог помочь! Удачи :) - person Khalil Khalaf; 26.10.2017