import types from "../actions/types";
export default function(state = null, action) {
switch (action.type) {
case types.fetchCartProducts:
return action.payload || false;
case types.modifyCart:
debugger;
switch (action.payload.operation) {
case "subtract":
const index = action.payload.index;
let isSingleCount = state[index] === 1;
let chosenIds = state;
if (isSingleCount) {
chosenIds = chosenIds.filter(index => index != index);
} else {
[
...chosenIds.slice(0, index),
{ ...chosenIds[index], count: chosenIds[index].count - 1 },
...chosenIds.slice(index + 1)
];
}
return (
chosenIds
)
}
default:
return state;
}
}
{
"Products": [
{
index: 1,
name: "Shirt",
price: 1.9,
count: 2
},
{
index: 2,
name: "Jeans",
price: 1.9,
count: 2
}
]
}
我有反应组件显示购物车产品。购物车中的每个产品都是一个单独的div,并且有+和 - 按钮可以增加,减少该产品的数量。点击我想减少数量,如果计数减少到0我也想从我的redux状态中删除这个产品。 现在我有我的减速器,我首先检查计数是否为1然后移除产品本身,否则只减少计数。我正在返回状态,但它没有更新DOM
任何人都可以提供帮助,因为我在返回状态时做错了。
由于
答案 0 :(得分:0)
看起来你正在直接操纵状态,这将导致React出现问题。您应该复制状态let chosenIds = state;
,而不是let chosenIds = Object.assign({}, state);
。然后你可以按照自己的意愿操纵chosenIds
。