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