【发布时间】:2020-06-14 08:39:04
【问题描述】:
我有一个已放入堆栈的登录屏幕。用户成功登录后,他被重定向到主屏幕,这是一个抽屉屏幕。抽屉屏幕的选项之一是注销,因此单击它的用户应该注销。以下是我的注销屏幕代码。我只是在 ui 的注销屏幕中显示进度条,但在 useEffect 挂钩中,我正在调用以下代码
navigation.reset({
routes: [{name: LOGIN_SCREEN}],
});
我也尝试在useLayoutEffect 中调用上述方法,但注销按钮只是挂起。
我的导航堆栈如下所示
<Stack.Navigator>
<Stack.Screen
name={LOGIN_SCREEN}
component={LoginScreen}
options={{headerShown: false}}
/>
<Stack.Screen
name={HOME_STACK_SCREEN}
component={DrawerStack}
options={{headerShown: false}}
/>
// ...
</Stack.Navigator>
我的抽屉组件如下
<Drawer.Navigator
drawerStyle={{backgroundColor: BLUE_COLOR_1}}
drawerContentOptions={{labelStyle: {color: '#FFF'}}}
>
<Drawer.Screen
name={HOME_SCREEN}
component={Home}
options={{
// ...
}}
/>
<Drawer.Screen
name={LOGOUT_SCREEN}
component={Logout}
options={{
// ...
}}
/>
// ...
</Drawer.Navigator>
以下是我的注销组件
const Logout = ({navigation}) => {
async function logout() {
try {
await AsyncStorage.clear();
navigation.reset({
index: 0,
routes: [{name: LOGIN_SCREEN}],
});
} catch (e) {
Alert.alert(e.toString());
console.log(e.toString());
}
}
useEffect(() => {
logout();
}, []);
return <ProgressBar />;
};
【问题讨论】:
-
你能分享
Logout组件吗? -
为什么要注销组件?只需使用抽屉内容来呈现一个带有注销的自定义内容并进行重置。
-
@AshwinMothilal 但如何使用 React Navigationv5。所有在线解决方案都展示了如何使用 v4 或更高版本进行操作。我在 v5 中找不到与文档相关的任何内容
-
@koox00 我已经在 wuestion 中添加了代码。请检查
标签: react-native react-hooks react-navigation-v5