我试图创建一个网络商店购物车组件的减速器,但我遇到了这个错误:
“操作”未定义
我的代码如下:
import { CART_ADD_ITEM } from "../constants/cartConstants";
import { addToCart } from '../actions/cartActions';
export const cartReducer = (state = { cartItems: [], action }) => {
switch(action.type){
case CART_ADD_ITEM:
const item = action.payload;
//we check if the item exists in state
const existItem = state.cartItems.find(x => x.product === item.product);
if(existItem){
return {
...state,
cartItems: state.cartItems.map(x => x.product === existItem.product ? item : x),
}
} else {
return {
...state,
cartItems : [...state.cartItems, item],
}
}
default:
return state;
}
};
这就是cartActions的样子。似乎以前的代码必须以某种方式使用它,但是如何使用呢?从“axios”导入axios;从“…”导入{CART\u ADD\u ITEM}/常数/常数';
导出常量addToCart=(id,数量)=
dispatch({
type: CART_ADD_ITEM,
payload: {
product: data._id,
name: data.name,
image: data.image,
price: data.price,
countInStock: data.countInStock,
quantity,
}
});
//once dispatched, we wnt ot save an item to local storage added to cart to local storage
//we get it in store.js
localStorage.setItem('cartItems', JSON.stringify(getState().cart.cartItems));
}
这有什么问题?
还原器以初始状态为第一个参数,动作为第二个参数。
改进了
let initialState = {cartItems: []}
export const cartReducer = (state = initialState, action) => {
switch(action.type){
case CART_ADD_ITEM:
//we check if the item exists in state
const existItem = state.cartItems.find(x => x.product === action.payload.product);
if(existItem){
return {
...state,
cartItems: state.cartItems.map(x => x.product === existItem.product ? action.payload : x),
}
} else {
return {
...state,
cartItems : [...state.cartItems, action.payload],
}
}
default:
return state;
}
};
您的减少器
期望一个操作
作为第二个参数。现在,您的代码包含action
作为默认状态下的属性,这是不正确的。减速机类型签名应该是这样的:
export const cartReducer = (state = { cartItems: [] }, action) => {
// Reducer content here
}
问题内容: 在这里找不到有关此错误的任何信息: “存储区没有有效的reducer。请确保传递给CombineReducers的参数是一个值为reducer的对象。” 我的减速机 合路器 我的商店配置 问题答案: 您的陈述不正确。无论您使用一起, 或者 使用,如果你有出口。 换句话说,将更改为,或将import语句从更改为。
我是通过npm安装来安装节点模块的,然后我在终端上尝试了gulp sass watch。和get ReferenceError:primordials未定义错误,如下所示,请帮助我解决此问题:- 提前感谢您。
我正在用Apache CXF构建Spring Boot应用程序。当尝试添加swagger时,我没有在spec中定义任何操作!错误,尽管我通过注释指定了1-2个操作。Swagger的CXF配置部分如下: 我相信功能设置不正确。我错过了什么?api-docs的链接如下所示:http://localhost:8080/cxf/todo_list/api-docs?url=/cxf/todo_list/s
本文向大家介绍在redux中,什么是reducer?它有什么作用?相关面试题,主要包含被问及在redux中,什么是reducer?它有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 reducer的作用 : 根据 action 对象的type 来更新状态. reducer的工作方式 : 接收一个 state 参数, 作为初始的 state 接收一个action对象, 在函数体中用 switc
问题内容: 当我将商店从道具传递到其他组件时,它变得不确定。我正在使用时会发生这种情况,但如果没有这种情况,它会很好。路线部分 路线在组件中 布局方法 我正在像这样通过应用程序组件传递商店 该商店将从这样的布局组件转到主体组件 在主体组件中,我是从正在node.js服务器中运行的api获取的 我在功能中出现错误 错误 无法读取未定义的属性“地图” 奇怪的是,当我在没有路线的情况下工作时,一切都会好
从研究中,我发现thunk是一种工具,您可以使用它将动作链接在一起和/或处理回调、异步动作和副作用。 我无法理解thunk中间件指南。他们总是引用store.dispatch(就像大多数关于redux的教程一样),但我从未真正调用调度,也从未访问过商店,所以我不确定如何实现他们提出的任何建议。(我假设这是因为我在反应中使用mapDispatchToProps......这在我的动作创建者文件中不是