簡體   English   中英

未定義不是 object(評估“navigation.toggleDrawer”)

[英]Undefined is not an object (evaluating 'navigation.toggleDrawer')

我正在用我的堆棧導航器設置我的抽屜導航器。

菜單按鈕應該觸發我的抽屜,但每當我按下它時,我都會收到此錯誤。

我在 App() 中將“導航”作為輸入傳遞,並且我已經導入了抽屜導航庫......不知道這里發生了什么

這是我的 App.js。 有錯誤的行在代碼的最后

 import React from 'react'; import * as firebase from 'firebase' import { NavigationContainer, getFocusedRouteNameFromRoute } from '@react-navigation/native'; import { createStackNavigator } from '@react-navigation/stack'; import { createDrawerNavigator } from '@react-navigation/drawer'; import { DrawerContent} from '/Users/toxnd/Documents/MaisJogo/MaisJogoApp/navigation/DrawerContent' import Icon from 'react-native-vector-icons/MaterialCommunityIcons' import LoadingScreen from '/Users/toxnd/Documents/MaisJogo/MaisJogoApp/screens/LoadingScreen' import WelcomeScreen from '/Users/toxnd/Documents/MaisJogo/MaisJogoApp/screens/WelcomeScreen' import SignInScreen from '/Users/toxnd/Documents/MaisJogo/MaisJogoApp/screens/SignInScreen' import SignUpScreen from '/Users/toxnd/Documents/MaisJogo/MaisJogoApp/screens/SignUpScreen' import HomeScreen from '/Users/toxnd/Documents/MaisJogo/MaisJogoApp/screens/HomeScreen' import MyGamesScreen from '/Users/toxnd/Documents/MaisJogo/MaisJogoApp/screens/MyGamesScreen' import WishListScreen from '/Users/toxnd/Documents/MaisJogo/MaisJogoApp/screens/WishListScreen' function getHeaderTitle(route) { const routeName = getFocusedRouteNameFromRoute(route)?? 'Home'; switch (routeName) { case 'Home': return 'Home'; case 'Meus Jogos': return 'Meus Jogos'; case 'Quero Jogar': return 'Quero Jogar'; } } const Drawer = createDrawerNavigator(); function Home({ navigation, route }) { React.useLayoutEffect(() => { navigation.setOptions({ headerTitle: getHeaderTitle(route) }); }, [navigation, route]); return ( <Drawer.Navigator drawerContent={props => <DrawerContent {...props} /> }> <Drawer.Screen name="Home" component={HomeScreen} /> <Drawer.Screen name='Meus Jogos' component={MyGamesScreen} /> <Drawer.Screen name='Quero Jogar' component={WishListScreen} /> </Drawer.Navigator> ); } const Stack = createStackNavigator(); const App = ({navigation}) => { return ( <NavigationContainer> <Stack.Navigator initialRouteName="Loading" screenOptions={{ headerStyle: { backgroundColor: '#BB2CD9', }, headerTintColor: '#fff', headerTitleStyle: { fontWeight: 'bold', }, }}> <Stack.Screen options={{headerShown: false}} name='Loading' component={LoadingScreen} /> <Stack.Screen options={{ headerShown: false }} name='Welcome' component={WelcomeScreen} /> <Stack.Screen options={{headerShown: false}} name="Sign In" component={SignInScreen} /> <Stack.Screen options={{ headerShown: false }} name='Sign Up' component={SignUpScreen} /> <Stack.Screen name="Home" component={Home} options={{ headerLeft: () => ( <Icon.Button name='menu' size={25} backgroundColor="transparent" onPress={() => navigation.toggleDrawer()} /> ) }} /> </Stack.Navigator> </NavigationContainer> ); } export default App

我遇到了同樣的問題,但我做了一些未經驗證的快速修復。

import { getFocusedRouteNameFromRoute } from '@react-navigation/native' // undefined

export default (route) => {
    if(route.state && route.state.routeNames.length > 1){
        return route.state.routeNames.slice(-1)[0]
    }else{
        return
    }
}

需要您自擔風險使用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM