我有一个切换导航器
// Add switch navigator
export default createAppContainer(
Config.Login.RequiredLogin
? createSwitchNavigator(
{
AuthLoading: AuthLoadingScreen,
App: DrawerNavigator, // App Stack
Auth: AuthNavigator, // Auth Stack
},
{
initialRouteName: "AuthLoading",
}
)
: DrawerNavigator
);
在首次启动应用程序期间,它将显示“身份验证”堆栈的登录屏幕。按下登录按钮后,它将通过获取来调用登录API并更新Redux用户。当有用户时,我应该如何导航到“ App”堆栈?
我试图将其放置在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()中放置一个标志,然后导航到那里吗?抱歉,我是React Native的新手。
render() {
const { userToken } = this.props
if(userToken){
this.props.navigation.navigate("App");
}
... other code for rendering login view
}
getDerivedStateFromProps的主要目的是什么?
答案 0 :(得分:1)
getDerivedStateFromProps应该用于更新有关newprops的状态。它不应用于重定向目的。您应该使用componentdidupdate
尝试一下
componentDidUpdate() {
const { userToken } = this.props
if(userToken){
this.props.navigation.navigate("App");
}
}
答案 1 :(得分:0)
您必须按照文档navigating-without-navigation-prop
中的说明实施NavigationService