reactjs - 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],
};
解决方案
您的状态具有包含data
对象数组的属性record
和包含当前对象的属性。如果您正在查看有关国家结构的意见,我认为这是不必要的重复。您可以只保存当前记录的 id 并使用选择器来获取整个对象。在多个地方拥有相同的数据并不好,因为您需要单一的事实来源。
但就这个选择器而言,您正在找到与id
from匹配的项目并将其action.payload
保存到 property 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,
};
推荐阅读
- laravel - distinct 在相关表中无法正常工作
- python-3.x - 如何使用 argsort 输出对多维数组进行排序
- r - R:从 100 个 tar.xy 文件中的每个文件中导入 150 个以 XYZ 开头的 .csv 文件
- flutter - 有没有办法使用颤振防止IOS中的屏幕截图?
- apex - SOQL 将 LIKE 与 EXPLICIT 集合一起使用
- php - 在 Woocommerce 购物车商品名称和订单商品名称中添加换行符
- typescript - 打字稿:类型保护在枚举联合上失败
- regex - 使用正则表达式检查数字,只有最后一个元素可以出现 2 次
- c - 我试图找到 3 个输入的总和和平均值,并使用引用调用来做到这一点
- perl - Perl 的 CGI::ProgressBar 模块出错