为什么我在使用传播运算符复制对象时收到状态突变警报?我正在尝试用redux制作一个购物车。当添加元素或减少其数量时,我会调度一个更新 de 状态的操作。在我的化简器中,如果尚未添加产品,我将返回带有新对象的状态数组的新副本。如果已经添加了它,我将使用map(返回一个新数组)和我正在增加的产品的副本进行迭代,并且其属性增加。问题是此属性 在不改变状态的情况下更新此属性的正确方法是什么?qty
还原剂
case types.ADD_TO_CART_SUCCESS:
const isAdded = state.cart.find(item => item.sku === action.product.sku);
if (!isAdded) action.product.qty = 1;
return {
...state,
cart: !isAdded
? [action.product, ...state.cart]
: state.cart.map(item =>
item.sku === action.product.sku
? { ...item, qty: ++item.qty }
: item
),
};
违规警告
Invariant Violation: A state mutation was detected inside a dispatch, in the path: `user.cart.0.qty`. Take a look at the reducer(s) handling the action {"type":"ADD_TO_CART_SUCCESS"....}
www说
Helenr
慕仙森
相关分类