【发布时间】:2019-02-11 07:26:56
【问题描述】:
我是反应原生开发的初学者。目前,我正在尝试为登录注销过程设置导航。这是我现在的应用流程Home -> SignIn -> Dashboard。现在,当用户单击仪表板中的注销按钮时,它应该返回主屏幕。这第一次效果很好,但问题是,如果用户已经登录,它会跳过 Home 和 SignIn 并直接转到 Dashboard 如果我尝试从那里注销它实际上会推送到新的Home 视图,同时将Dashboard 保留在堆栈中,当我SignIn 时,它会弹出转换到Dashboard 显示旧状态数据。我做了一些挖掘,它说 react 没有弹出特定视图的规定,我们可能不得不使用 hack 来替换屏幕,但我不确定如何继续。以下是我当前用于堆栈导航器和注销过程的代码。
const Navigator = createStackNavigator({
SplashScreen: {
screen: SplashScreen,
navigationOptions: {
header: null
}
},
Home: {
screen: Home,
navigationOptions: ({ navigation }) => ({
header: null
})
},
SignIn: {
screen: SignIn,
navigationOptions: {
header: null
}
},
Dashboard: {
screen: Dashboard,
navigationOptions: {
header: null
}
}
});
const Drawer = DrawerNavigator(
{ Navigator: { screen: Navigator } },
{ contentComponent: NavigationDrawer }
);
//In Dashboard
logoutUser = () => {
//Perform API call to logout user
this.props.navigation.navigate("Home");
}
【问题讨论】:
-
你为什么不试试reactnavigation.org/docs/en/auth-flow.html#docsNav这样的东西?您也可以使用 this.props.navigation.navigate('Screen Name') 并在之后清除导航历史记录
-
在这种情况下您可能需要使用switchNavigator
标签: react-native react-native-android react-navigation react-native-ios stack-navigator