我有一个问题,这个代码正确吗?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
非常令人困惑。您可以使用析构函数仅从有效负载(const {id} = action.payload;
(中获取id
。或者您可以在比较中使用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,
};