簡體   English   中英

React Native - TypeError: undefined is not an object(評估'navigation.toggleDrawer')

[英]React Native - TypeError: undefined is not an object (evaluating 'navigation.toggleDrawer')

在我的 App 項目中,我試圖創建一個按鈕,如果按下該按鈕會打開抽屜導航器(查看下面代碼中的toDrawerButton組件)。 我的問題是按下此按鈕時出現以下錯誤:

TypeError: undefined is not an object(評估“navigation.toggleDrawer”)

這是因為this.props是一個 void object (Object {}) 然后this.props.navigation是未定義的。

我該如何解決這個問題並讓我的this.props object 不再無效? 謝謝!

 import React, {Component} from 'react'; import { NavigationContainer } from '@react-navigation/native'; import { createStackNavigator } from '@react-navigation/stack'; import { createDrawerNavigator } from '@react-navigation/drawer'; import Menu from './MenuComponent'; import Home from './HomeComponent'; import {Icon, Button} from 'react-native-elements'; const toDrawerButton = ({ headerLeft: ({navigation}) => (<Button icon = {<Icon name='menu' size={24} color='black' onPress={() => navigation.toggleDrawer()}/>} />)}); // each choiche in the DrawerNavigator will have a stack hiarerchy, this is why for // each of them I define a stackNavigator (even if with just one screen at the moment) ------------------ const MenuNavigator = createStackNavigator(); const MenuNavigatorScreens = () => ( <MenuNavigator.Navigator initialRouteName="Menu"> <MenuNavigator.Screen name = "Menu" component={Menu} options={toDrawerButton}/> </MenuNavigator.Navigator>); const HomeNavigator = createStackNavigator(); const HomeNavigatorScreens = () => ( <HomeNavigator.Navigator initialRouteName="Home"> <HomeNavigator.Screen name = "Home" component={Home} /> </HomeNavigator.Navigator>); // DrawerNavigator definition ------------------------------------ const DrawerNavigator = createDrawerNavigator(); const DrawerNavigatorScreens = () => ( <NavigationContainer> <DrawerNavigator.Navigator initialRouteName="Home"> <DrawerNavigator.Screen name = "Home" component={HomeNavigatorScreens}/> <DrawerNavigator.Screen name = "Menu" component={MenuNavigatorScreens}/> </DrawerNavigator.Navigator> </NavigationContainer>); class MainNavigator extends Component { constructor(props) { super(props); } render(){ return (<DrawerNavigatorScreens/>) } }; export default MainNavigator;

您應該將 toDrawerButton 更改為:

const toDrawerButton = ({navigation})=>({
    headerLeft: () =>
            (<Button
            icon = {<Icon name='menu' size={24}
                    color='black'
                    onPress={() => navigation.toggleDrawer()}/>}
            />)});
})

暫無
暫無

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

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