使用Redux成功登录后,如何导航到应用程序堆栈



我有一个交换机导航

// Add switch navigator
export default createAppContainer(
Config.Login.RequiredLogin
? createSwitchNavigator(
{
AuthLoading: AuthLoadingScreen, 
App: DrawerNavigator, // App Stack
Auth: AuthNavigator, // Auth Stack
},
{
initialRouteName: "AuthLoading", 
}
)
: DrawerNavigator
);

在第一个应用程序启动期间,它会显示"Auth"堆栈的登录屏幕。按下登录按钮后,它将通过fetch调用登录API并更新redux用户。当有用户时,我应该如何导航到"应用程序"堆栈?

我试着把它放在getDerivedStateFromProps中,但它给出了错误

TypeError:undefined不是对象(正在评估"this.props.navigation"(

static getDerivedStateFromProps(nextProps, prevState) {
if (prevState.userToken !== nextProps.userToken) {
this.props.navigation.navigate("App");
return {
userToken: nextProps.userToken
};
}
// Return null to indicate no change to state.
return null;
}

我应该在render((中放置一个标志并导航到那里吗?对不起,我是反应母语的新手。

render() {
const { userToken } = this.props
if(userToken){
this.props.navigation.navigate("App");
}

... other code for rendering login view
}

getDerivedStateFromProps的主要目的是什么?

getDerivedStateFromProps应用于更新关于newprops的状态。它不应用于重定向目的。你应该使用组件更新

试试这个

componentDidUpdate() {
const { userToken } = this.props
if(userToken){
this.props.navigation.navigate("App");
}
}

您必须实现本文档中所述的NavigationService,在没有导航道具的情况下导航

最新更新