成功操作后重定向

时间:2019-01-27 13:06:07

标签: reactjs react-native redux react-navigation

我目前正在使用react-navigation包在React Native中进行身份验证项目。到目前为止,到目前为止,我有3个导航器设置,一个用于加载,一个用于auth,一个用于应用程序。

我还获得了带有redux的导航设置,因此我可以通过prop从任何组件访问它,这正是我想要做的。

但是,我有一个问题。我已经进行了一些研究,但似乎还没有找到最好的方法。

我正在通过按下按钮attemptLogin()来调度操作,然后尝试登录然后执行其提示,然后尝试登录。

成功登录后,我使用expo将access_token存储在SecureStore中。

现在,成功登录后,我需要从当前堆栈导航到新堆栈。

执行此操作的最佳方法是什么,您可以通过redux操作返回承诺吗?如果是这样,最好的方法是先放入组件内部然后再放入组件内部进行

操作

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

还是您会在动作中执行此操作?

2 个答案:

答案 0 :(得分:1)

推荐的方法如下:

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中实现逻辑。以我的拙见,这种方式对于任何想要维护您代码的人来说都是最清楚的

答案 1 :(得分:0)

您还可以从redux动作或所需的任何位置导航。

阅读有关导航服务的官方docs

相关问题