javascript - 类型错误:未定义不是对象(评估“availableMeals.filter”)。我不知道为什么会收到此错误
问题描述
我正在使用 useSelector() 挂钩将状态作为道具传递,但我收到一条错误消息:
TypeError: undefined is not an object (evaluating 'availableMeals.filter')
/store/reducers/meals.js:
import { MEALS } from "../../Data/Dummy-Data";
const intialState = {
meals: MEALS,
filteredMeals: MEALS,
FavouriteMeals: [],
};
const mealsReducer = (state = intialState, action) => {
return action;
};
export default mealsReducer;
CategoryMealScreen.js:
import React from "react";
import { useSelector } from "react-redux";
import { CATEGORIES } from "../Data/Dummy-Data";
import MealListData from "../component/mealListData";
const CategoryMealScreen = (props) => {
const catId = props.navigation.getParam("categoryId");
const availableMeals = useSelector((state) => state.meals.filteredMeals);
const DisplayedMeal = availableMeals.filter(
(meal) => meal.categoryIds.indexOf(catId) >= 0
);
return (
<MealListData listData={DisplayedMeal} navigation={props.navigation} />
);
};
CategoryMealScreen.navigationOptions = (navigationData) => {
const catId = navigationData.navigation.getParam("categoryId");
const selectedCategory = CATEGORIES.find((cat) => cat.id === catId);
return {
headerTitle: selectedCategory.title,
};
};
export default CategoryMealScreen;
我不知道为什么我会收到这个错误。
解决方案
问题出在你的减速机上,
const mealsReducer = (state = intialState, action) => {
return action;
};
您正在返回一个 action 而不是 state 。请将此更改为
const mealsReducer = (state = intialState, action) => {
return state;
};
推荐阅读
- c# - C# ClosedXML 表格主题列表
- ruby - Ruby gem 以获得更好/真实的代码覆盖率(多次测试测试用例)
- operating-system - 多核线程处理
- java - 如何在邮递员中请求 Rest API eclipse 服务?
- node.js - 无法在 AWS S3 上使用 Node.js/axios 上传图像
- r - R terra 函数分类创建非常大的文件
- javascript - 无法为 Electron 应用程序创建 Win-Installer
- snowflake-cloud-data-platform - 为什么 ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE 在雪花中不起作用?
- angular - Ionic MenuController 在 ios 上评估“this.menuInnerEl.offsetWidth”
- angular - 角度表不使用窗口/容器调整大小