我目前正在使用react-navigation
包在React Native中进行身份验证项目。到目前为止,到目前为止,我有3个导航器设置,一个用于加载,一个用于auth,一个用于应用程序。
我还获得了带有redux的导航设置,因此我可以通过prop从任何组件访问它,这正是我想要做的。
但是,我有一个问题。我已经进行了一些研究,但似乎还没有找到最好的方法。
我正在通过按下按钮attemptLogin()
来调度操作,然后尝试登录然后执行其提示,然后尝试登录。
成功登录后,我使用expo将access_token
存储在SecureStore
中。
现在,成功登录后,我需要从当前堆栈导航到新堆栈。
执行此操作的最佳方法是什么,您可以通过redux操作返回承诺吗?如果是这样,最好的方法是先放入组件内部然后再放入组件内部进行
操作 this.props.login(username, password).then(() => { this.props.navigation... });
还是您会在动作中执行此操作?
答案 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。