【发布时间】:2020-09-18 10:47:20
【问题描述】:
如果状态数组中已经存在商品,我需要增加购物车中商品的数量。在减速器中,我让它工作,但它需要是不可变的。因此,我的组件没有正确更新。
这是我的减速器的代码:
import { ADD_TO_CART, REMOVE_FROM_CART } from '../actions/types';
const initialState = [];
//Cannot mutate array in reducer
export default function(state = initialState, action){
const { type, payload } = action;
switch(type){
case ADD_TO_CART:
const newState = [...state]
for(var i = 0; i < newState.length; i++){
if(newState[i].item.uid === payload.item.uid){
newState[i].item.qty ++;
return [...newState];
}
}
return [...state, payload];
case REMOVE_FROM_CART:
for(var j = 0; j < state.length; j++){
if(state[j].item.uid === payload.uid){
state[j].item.qty = 1;
}
}
return state.filter(cartItem => cartItem.item.uid !== payload.uid);
default:
return state;
}
}
如果 item 已经在数组中,我需要增加 qty。
【问题讨论】:
标签: javascript arrays reactjs redux react-redux