我想重置我的SwitchNavigator(根),这将重置所有嵌套的导航器,然后转到SignInScreen。
我浪费了很多时间,尝试了很多事情。似乎以前,我们可以使用
NavigationActions.reset({
key: null,
index: 0,
actions: [NavigationActions.navigate({ routeName: 'SignIn' })],
})
但是在实际版本的反应导航中,reset
不能使用NavigationActions
,而StackActions
只能使用StackNavigator
。我的意思是,我想重置我的根导航器,而不仅仅是重置嵌套的react-navigation
。
在null
的问题中,我看到如果密钥为this.props.navigation.dispatch(StackActions.reset({
key: null,
index: 0,
actions: [
NavigationActions.navigate({
routeName: 'SignIn',
}),
],
}));
,则根导航器将重置。所以我尝试了这样:
ProfileScreen
我不知道它是否有效,因为我无法从我的SignInScreen
(要注销的屏幕)转到{{1}},因此出现此错误:
错误:没有为密钥登录定义任何路由。 必须是以下之一:'ProfileScreen'
所以,我的问题是:
答案 0 :(得分:1)
摘自createSwitchNavigator
的文档:
默认情况下,它不处理后退操作,并且在您离开时将路由重置为其默认状态。
因此,您真正需要做的就是导航到SignIn
屏幕。
this.props.navigation.navigate('SignIn')
但是,由于它说没有为该密钥定义路由,因此您应该确保这是在AuthStack.js
中定义的正确路由名称。