javascript - 为什么findIndex后值变回原来的值?
问题描述
您好我正在尝试更新该项目的价值。项目数据来自 redux 存储并显示在页面上
所以我现在将尝试编辑项目的值。编辑后保存我控制台注销值。这是代码
const save = async (key) => {
try {
const row = await this.formRef.current.validateFields();
// ============================ i change here ===============
const newData = [...data];
console.log(newData)
const index = newData.findIndex((item) => key === item.key);
// ============================ ===============
console.log(index)
console.log(newData)
console.log(newData[index])
// this.props.updateItem(newData[index])
// ============================ ===============
if (index > -1) {
const item = newData[index];
newData.splice(index, 1, { ...item, ...row });
this.setState({
data: newData,
editingKey: "",
});
} else {
newData.push(row);
this.setState({
data: newData,
editingKey: "",
});
}
} catch (errInfo) {
console.log("Validate Failed:", errInfo);
}
};
如您所见,有很多console.log。为了让我更新项目,我需要找到我更新的项目的索引。在那里你可以看到有一行代码可以找到索引。
当我控制台记录新数据时。数据已更新,但当我控制台日志(newData [index])时,值将更改回旧值。
这是图像
有人可以告诉我为什么将值更改回旧值。我该如何纠正这种行为
解决方案
推荐阅读
- java - 未从 AttributeConverter 内的属性中获取值
- javascript - DFP 广告管理系统 (DFP) 解决方案上的 Adobe Flash Animate CC HTML5 广告
- haskell - 函数 buildTree' Haskell 中的非详尽模式
- php - 通过 POST 接收的 HTML 实体与在同一页面中创建的实体不可比较
- mysql - 无法连接到通过 Route53 托管的 RDS 只读副本的域名
- mysql - mysql: [错误] 未知变量 'sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE
- kubernetes - Traefik Dashboard - 自定义 API 路径
- spring - AspectJ LTW 未在 Tomcat 中配置 Spring
- tsql - 从另一个表中查找最近 90 天内的记录并返回相关列
- javascript - 在 Angular 8 项目中导入传单控制地理编码器?