Перенаправление после успешного действия - PullRequest
0 голосов
/ 27 января 2019

В настоящее время я работаю над проектом аутентификации в React Native с использованием пакета react-navigation.Пока все хорошо, у меня есть 3 настройки навигатора, один для загрузки, один для аутентификации и один для приложения.

У меня также есть настройка навигации с избыточностью, так что я могу получить к ней доступ из любого компонента через реквизитИменно это я и хотел сделать.

Однако у меня есть вопрос.Я провел какое-то исследование и, похоже, не могу найти лучший способ сделать это.

Я отправляю действие нажатием кнопки attemptLogin(), когда попытка входа в систему делает то, что говорится нажесть, это попытка входа в систему.

После успешного входа в систему я сохраняю access_token в SecureStore, используя expo.

Теперь, после успешного входа в систему мне нужно перейти от текущего стека к новому.

Каков наилучший способ сделать это, вы можете вернуть обещание из-за избыточного действия?Если так, то лучший способ быть внутри компонента, а затем внутри компонента, сделать что-то вроде

this.props.login(username, password).then(() => { this.props.navigation... });

Или вы бы сделали это внутри действия?

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Вы также можете переходить от редукционного действия или в любое удобное для вас место.

читать официальные документы о службе навигации.

0 голосов
/ 27 января 2019

Рекомендуемый способ, как показано ниже:

componentDidUpdate(prevProps) {
  if(this.props.loggedInSuccessfully && !prevProps.loggedInSuccessfully) {
    this.props.navigation.navigate....
  }
}

onLoginButtonPress = () => {
  const { username, password } = this.state;
  this.props.login(username, password);
}

После успешного входа в систему обновите состояние loggedInSuccessfully в вашем редукторе и внедрите логику в componentDidUpdate. Этот способ, по моему скромному мнению, является наиболее подходящим для тех, кто собирается поддерживать ваш код

...