【问题标题】:Navigation undefined - TypeError: undefined is not an object (evaluating 'navigation.navigate')导航未定义 - 类型错误:未定义不是对象(评估“navigation.navigate”)
【发布时间】:2021-02-20 15:35:58
【问题描述】:

我在使用主屏幕上标题按钮的导航道具时遇到问题。看来问题是无法渲染 Navaigation 道具。有人可以帮我解决这个问题吗?我花了很多时间阅读文档,但不能更进一步。谢谢!

import * as React from 'react';
import {createStackNavigator} from '@react-navigation/stack';
import Home from '../screens/Shop/Home';
import ProductDetails from '../screens/Shop/ProductDetails';
import Colors from '../constants/Colors';
import {Ionicons} from '@expo/vector-icons';
import {
  HeaderButtons,
  HeaderButton,
  Item,
} from 'react-navigation-header-buttons';
import Cart from '../screens/Shop/Cart';
import {NavigationContainer, useNavigation} from '@react-navigation/native';

const IoniconsHeaderButton = (props) => (
  <HeaderButton
    IconComponent={Ionicons}
    iconSize={23}
    color="white"
    {...props}
  />
);

const Stack = createStackNavigator();

export default ShopNavigator = ({navigation}) => {
  return (
    <Stack.Navigator
      screenOptions={{
        headerStyle: {
          backgroundColor: Colors.accent,
        },
        headerTintColor: 'white',
        headerTitleStyle: {
          fontFamily: 'balsamiq-regular',
        },
      }}
    >
      <Stack.Screen
        name="Home"
        component={Home}
        options={{
          headerRight: () => (
            <HeaderButtons HeaderButtonComponent={IoniconsHeaderButton}>
              <Item
                title="search"
                iconName="cart-outline"
                onPress={() => navigation.navigate('Cart')}
              />
            </HeaderButtons>
          ),
        }}
      />
      <Stack.Screen
        name="ProductDetails"
        component={ProductDetails}
        options={({route}) => ({title: route.params.itemTitle})}
      />
      <Stack.Screen name="Cart" component={Cart} />
    </Stack.Navigator>
  );
};

【问题讨论】:

    标签: react-native react-native-navigation


    【解决方案1】:

    基本上,您只是没有传递选项返回的导航参数。这就是出现未定义错误的原因

    改变这个

      options={{
              headerRight: () => (
                <HeaderButtons HeaderButtonComponent={IoniconsHeaderButton}>
                  <Item
                    title="search"
                    iconName="cart-outline"
                    onPress={() => navigation.navigate('Cart')}
                  />
                </HeaderButtons>
              ),
            }}
    

    到这里

       options={({ navigation }) => ({
            headerRight: () => (
              <HeaderButtons HeaderButtonComponent={IoniconsHeaderButton}>
                <Item
                  title="search"
                  iconName="cart-outline"
                  onPress={() => navigation.navigate('Cart')}
                />
              </HeaderButtons>
            ),
          })}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多