我正在将React Navigation用于我的React本机应用程序。
我的根堆栈如下:
const AuthStack = createStackNavigator({
Authentication: {
screen: Authentication,
},
Login: {
screen: Login,
},
Register: {
screen: Register,
},
});
const AppStack = createStackNavigator({
Main: {
screen: Main,
},
});
export const RootNav = createSwitchNavigator(
{
AuthLoading: {
screen: AuthLoadingScreen,
},
App: {
screen: AppStack,
},
Auth: {
screen: AuthStack,
},
},
{
initialRouteName: 'AuthLoading',
}
);
Main
是一个标签导航器,具有3个堆栈导航器,如下所示:
const FeedStack = createStackNavigator({
Feed: {
screen: Feed,
},
});
const ExploreStack = createStackNavigator({
Explore: {
screen: Explore,
},
});
const AccountStack = createStackNavigator({
Account: {
screen: Account,
},
});
const NavBar = createBottomTabNavigator(
{
Feed: {
screen: FeedStack,
},
Explore: {
screen: ExploreStack,
},
Account: {
screen: AccountStack,
},
}
}
我的问题是帐户堆栈。在“帐户”屏幕下找到了注销按钮,但是当我打电话给this.props.navigation.navigate('Auth')
时,什么也没发生。
我尝试使用this.props.navigation.reset()
和this.props.navigation.dispatch()
,但它们都不起作用。
有人知道用户注销后如何切换回身份验证堆栈吗?
答案 0 :(得分:1)
我认为我的情况与此类似,并且代码中有一个最近记录的功能,但是该功能未导出,并且仅在5天前已修复-似乎对我有用。
导入SwitchActions ...
import { SwitchActions } from 'react-navigation;
...并使用jumpTo方法:
this.props.navigation.dispatch(SwitchActions.jumpTo({ routeName: 'Auth' }));
我正在嵌套在堆栈导航器中深处的组件中执行此操作,以返回到父开关导航器中的上一个屏幕,因此也许对您有用。
此处引用:https://reactnavigation.org/docs/en/switch-actions.html#jumpto