![](/img/trans.png)
[英]Modifying state & the correct way to update my reducer? (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.