繁体   English   中英

React redux 正确状态更新

[英]React redux correct state update

我有一个问题,这段代码正确吗? 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],
      };

您的状态有一个带有对象数组的属性data和带有当前对象的属性record 如果您正在查看对国家结构的意见,我认为这是不必要的重复。 您可以只保存当前记录的 id 并使用选择器来获取整个对象。 在多个地方拥有相同的数据并不好,因为您需要单一的事实来源。

但是就这个选择器而言,您正在查找与action.payload中的id匹配的项目,并将其保存在属性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,
      };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM