Redux reducers:items.map 不是函数

问题描述 投票:0回答:1

这是一个学习目的的问题,我卡在了一个特定的方法上。我正在玩 Redux 来学习它,我对我的一部分代码有疑问。假设我有我附加的组件作为屏幕截图,这非常简单。

这个item属性是4个键值对(uuid, quantity, price, name)的对象。我正在尝试以两种方式更新数量。一个成功,一个不成功。

在减速器中这个工作:

   if (action.type === QUANTITY_UPDATED) {
    return state.map((item) => {
      console.log(item);
      if (item.uuid === action.payload.uuid) {
        return { ...item, quantity: action.payload.quantity };
      }
    
      return item;
    });
   };

但这并没有返回我提到的 .map 不是函数的错误。这可能是我犯的一个愚蠢的错误,但无法弄清楚。任何输入?

  if (action.type === QUANTITY_UPDATED) {
    const item = state.find((item) => item.uuid === action.payload.uuid);
    return { ...item, quantity: action.payload.quantity };
  }

此外,请确保在 Redux reducers 中,我无法更改属性。会不会是这个原因?

javascript reactjs redux state destructuring
1个回答
0
投票

啊,现在我看到问题了。你总是应该从你的减速器返回相同类型的状态。

在这里,您从减速器返回一个数组:


   if (action.type === QUANTITY_UPDATED) {
    return state.map((item) => {
      console.log(item);
      if (item.uuid === action.payload.uuid) {
        return { ...item, quantity: action.payload.quantity };
      }
    
      return item;
    });
   };

但是在这里,你要返回一个对象:

  if (action.type === QUANTITY_UPDATED) {
    const item = state.find((item) => item.uuid === action.payload.uuid);
    return { ...item, quantity: action.payload.quantity };
  }

对象不是数组。

下次你尝试更新状态时,你的 reducer 无论如何都会坏掉

© www.soinside.com 2019 - 2024. All rights reserved.