Redux reducer状态不更新

时间:2018-02-24 16:33:24

标签: redux return react-redux state reducers

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

任何人都可以提供帮助,因为我在返回状态时做错了。

由于

1 个答案:

答案 0 :(得分:0)

看起来你正在直接操纵状态,这将导致React出现问题。您应该复制状态let chosenIds = state;,而不是let chosenIds = Object.assign({}, state);。然后你可以按照自己的意愿操纵chosenIds

相关问题