反应redux正确状态更新

时间:2020-10-23 12:15:21

标签: reactjs redux react-redux

我有一个问题,这个代码正确吗? React中的状态是不变的,所以这是正确的吗?

 case "GET_SINGLE":
      const newState = [...state.data];
      const id = action.payload;
     
      const item = newState.filter((item) => item.id === id.id);
   
      return {
        ...state,
        record: item[0],
      };

1 个答案:

答案 0 :(得分:1)

您的状态具有包含对象数组的属性data和具有当前对象的属性record。如果您对国家结构发表意见,我认为这是不必要的重复。您可以只保存当前记录的ID,然后使用选择器来获取整个对象。在多个地方拥有相同的数据不是很好,因为您想要一个真实的来源。

但是就此选择器而言,您正在从id中找到与action.payload相匹配的项目,并将其保存在属性record中。您只在寻找一项,因此应使用find()而不是filter()

使用变量id.id非常令人困惑。您可以使用解构从负载(id)中仅获取const {id} = action.payload;。或者您可以在比较(action.payload.id)中使用item.id === action.playload.id

 case "GET_SINGLE":
      const {id} = action.payload;
     
      const item = state.data.find((item) => item.id === id);
   
      return {
        ...state,
        record: item,
      };