react-native - React Native 中的身份验证流程
问题描述
我在创建我的应用程序的身份验证流程时遇到问题。我真正想要的是根据用户的角色有条件地导航用户。
默认情况下,我创建了一个 AuthStack,它基本上是一个 stackNavigator,它有一个登录页面。一旦用户登录,我们就会通过网络请求接收用户的角色。接下来,我将他导航到一个简单的主页,该主页只返回基于他的角色的 switchNavigator。这是为了更清晰的代码。
const AuthStack = createStackNavigator({
Login: {
screen: Login
},
SignUp: {
screen: SignUp
},
Home: {
screen: Home
}
},
{
initialRouteName: 'Login',
headerMode: 'none'
});
const AppContainer = createAppContainer(AuthStack);
const Navigation = () => {
return <AppContainer />
}
当用户登录时,我将他重定向到上述堆栈中显示的主屏幕。这是主屏幕中的代码:
const Home = (props) => {
const AppContainer = createAppContainer(RootNavigator(props.user.role))
return <AppContainer />
}
在这里,我创建了一个新的应用程序容器(这可能是不好的做法,请提供建议)。RootNavigator 是一个辅助函数,它返回一个 switchNavigator:
export const RootNavigator = (user) => {
return createSwitchNavigator({
Admin: {
screen: AdminDrawerNavigator
},
Reporter: {
screen: ReporterDrawerNavigator
}
},
{
initialRouteName: user === 'admin'? 'Admin': 'Reporter'
})
}
这一切都很好,但似乎 switchNavigator 似乎无法正常工作。如果我按下硬件的返回按钮,它会返回登录页面。感谢您的时间。请提出可能的解决方案。
解决方案
尝试重置您的历史导航:
NavigationActions.reset({
index: 1,
actions: [NavigationActions.navigate({
routeName: 'Admin'
}),
]
});
推荐阅读
- linux - 查找在特定文件中找到文本的目录
- swift - 在运行时更改 UITabBar.appearance().tintColor
- python - 有没有办法让 PIL 缩略图只固定一个维度和纵横比?
- python - 在 psynet 中,如果我使用“newenv”方法,如何更改 psynet 代码?
- python - 使用字典 pandas 填充 NaN 值
- nextflow - Nextflow,限制谷歌的并发worker数
- django - 删除 .temp-builds 后未安装 Pillow
- javascript - VueJS this.progress 在窗口函数中未定义
- integration - 如何调用在不同集成服务中运行的 informatica 工作流
- javascript - 在IOS(Safari)上运行vue项目时总是选择“拍照”