使用非可变方法时,React Redux状态不会更新

时间:2019-10-09 06:39:54

标签: reactjs redux react-redux

问候,我在更新应用程序状态时遇到问题。

一切正常,如果我使用的方法违反了React的可变性原则。 这是我的状态:

"babel": { "testOptions": { "presets": … } }

action.payload是:

const state= {
    cart: {
        items: [
            {
                productId: "A1",
                quantity: "1",
                unitPrice: "9"
            }
        ]
    }
};

它适用于此:

{productId: "A2", quantity: "1", unitPrice: "11"}

但是,我想使用更好的方法。像这样一个:

case ADD_PRODUCT_TO_CART: 
  state.cart.items.push(action.payload);
  return state;

但是它不会更新我的状态。 store.getState()输出初始状态。

1 个答案:

答案 0 :(得分:0)

您错过了cart键。

这应该有效:

case ADD_PRODUCT_TO_CART: 

  return {
    ...state, 
    cart: {                  // add cart key
      ...state.cart,
      items: [
        ...state.cart.items,
        action.payload       // new items will be the last
      ]
    }
  };