繁体   English   中英

在现有阵列的阵列中添加新的 object

[英]Adding new object in array in existing array

我使用钩子和 es6 在我的反应应用程序中具有 CRUD 功能。 我也在使用 AntDesign 列表组件。 在我的添加function中,第一次添加后,预计会被添加到列表中。

在此处输入图像描述

但是在创建另一个之后,它只是替换了现有的数组。 它没有像索引 1 那样添加。它始终是索引 0。

在此处输入图像描述

这是我的代码

const leaveTypeList = [];
const [isLeaveType, setLeaveType] = useState(leaveTypeList);

useEffect(() => {
  setLeaveType(leaveTypeList);
}, [setLeaveType]);

const payload = {
  leaveTag: values.leaveTag,
  leaveTagColor: values.leaveTagColor,
  hexCode: state.tagColor,
  dateCreated: formatLeaveTypeDate,
};

leaveTypeList.push(payload);
setLeaveType(leaveTypeList);

在此处输入图像描述

嘿,因为您需要向数组添加一个新项目,所以不需要 useEffect 挂钩

const leaveTypeList = [];
const [isLeaveType, setLeaveType] = useState(leaveTypeList);

const payload = {
  leaveTag: values.leaveTag,
  leaveTagColor: values.leaveTagColor,
  hexCode: state.tagColor,
  dateCreated: formatLeaveTypeDate,
};

setLeaveType([...isLeaveType,payload]);

您可以简单地使用 setter 设置新的 state 通过添加新的有效负载来更新现有数组。

您应该通过isLeaveType.push(payload)推送新数据。

还,

useEffect(() => {
  setLeaveType(leaveTypeList);
}, [setLeaveType]);

对我来说没有意义。 由于setLeaveTypeisLeaveType的设置器,因此效果没有理由依赖它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM