我試圖在 DrawerNavigator 中實作一個注銷按鈕,它應該通過我背景關系中的一個函式注銷,然后應該使用 useNavigation 掛鉤更改導航。但是,當它加載組件時,出現以下錯誤:

這是我試圖執行的代碼:
import React, { useContext } from "react";
import { View, Text, Alert, StyleSheet, TouchableOpacity } from "react-native";
import {
DrawerContentScrollView,
DrawerItemList,
DrawerItem,
} from "@react-navigation/drawer";
import { useNavigation } from "@react-navigation/native";
import AuthContext from "../store/auth-context";
const CustomSidebarMenu = (props) => {
const navigation = useNavigation();
const authCtx = useContext(AuthContext);
return (
<View style={stylesSidebar.sideMenuContainer}>
<DrawerContentScrollView {...props}>
<DrawerItemList {...props} />
<TouchableOpacity
style={stylesSidebar.buttonStyle}
onPress={() => {
authCtx.logout();
navigation.replace("Login");
}}
activeOpacity={0.5}
>
<Text style={stylesSidebar.buttonTextStyle}>Logout</Text>
</TouchableOpacity>
</DrawerContentScrollView>
</View>
);
};
export default CustomSidebarMenu;
使用回呼代碼:
const logoutHandler = useCallback(async () => {
setToken(null);
await AsyncStorage.removeItem('token');
await AsyncStorage.removeItem('expirationTime');
if (logoutTimer) {
clearTimeout(logoutTimer);
}
}, []);
uj5u.com熱心網友回復:
來自阿波羅檔案:Note that you cannot use the useNavigation hook inside the drawerContent since useNavigation is only available inside screens. You get a navigation prop for your drawerContent which you can use instead
試試props.navigation.replace("Login");吧
您在 Github 上也面臨同樣的問題:https ://github.com/react-navigation/react-navigation/issues/7725
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/411162.html
標籤:
上一篇:我該如何解決這個錯誤?“在'./App'中找不到匯出'默認'(匯入為'App')(可能的匯出:App)”(我使用反應)
