无法读取undefined的属性“navigation”,即使它是- react native

e4eetjau  于 6个月前  发布在  React
关注(0)|答案(2)|浏览(67)

由于某种原因,我得到这个错误''无法读取属性'导航'的未定义''.我不知道问题可能在哪里我仔细检查了一切.这里是我的App.js文件

import { StyleSheet, Text, View } from 'react-native';
import CategoriesScreen from './screens/CategoriesScreen';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import MealsOverviewScreen from './screens/MealsOverviewScreen';
const Stack =  createNativeStackNavigator()

export default function App() {
  return (
    <>
    <StatusBar style='light'/>
    <NavigationContainer>
     <Stack.Navigator>
     
      <Stack.Screen  name="MealsCategories" component={CategoriesScreen}/>
      <Stack.Screen name="MealsOverview" component={MealsOverviewScreen}/>
     </Stack.Navigator>
    </NavigationContainer>
   <CategoriesScreen/>
    </>
  )}

字符串
下面是导航应该发生的文件:

import { FlatList } from "react-native";
import { CATEGORIES } from "../data/dummy-data";
import GategoryGridTile from "../components/CategoryGridTale";
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

function CategoriesScreen({ navigation }){

    function renderCategoryItem(itemData){
    function pressHandler() {
      navigation.navigate('MealsOverview')
    }
 return (
   <GategoryGridTile 
   title={itemData.item.title}
    color={itemData.item.color} 
    onPress={pressHandler}/>
 )
}
    return (
        <FlatList
        data={CATEGORIES}
        keyExtractor={(item) => item.id}
        renderItem={renderCategoryItem}
        numColumns={2}
        />
    )
}
export default CategoriesScreen

siotufzp

siotufzp1#

我发现了错误。这是因为NavigationContainer下的CategoriesScreen

u7up0aaq

u7up0aaq2#

你所做的应该是可行的,但是如果其他方法都失败了,尝试使用useNavigation钩子。

import { useNavigation } from "@react-navigation/core";
import { FlatList } from "react-native";
import { CATEGORIES } from "../data/dummy-data";
import GategoryGridTile from "../components/CategoryGridTale";
import { NavigationContainer } from "@react-navigation/native";
import { createNativeStackNavigator } from "@react-navigation/native-stack";

function CategoriesScreen() {
  const navigation = useNavigation();
  function renderCategoryItem(itemData) {
    function pressHandler() {
      navigation.navigate("MealsOverview");
    }
    return (
      <GategoryGridTile
        title={itemData.item.title}
        color={itemData.item.color}
        onPress={pressHandler}
      />
    );
  }
  return (
    <FlatList
      data={CATEGORIES}
      keyExtractor={(item) => item.id}
      renderItem={renderCategoryItem}
      numColumns={2}
    />
  );
}
export default CategoriesScreen;

字符串
编辑:啊,看起来你在JSX代码中有一个错字。

相关问题