javascript - 在现有数组中添加数组中的新对象

标签 javascript reactjs ecmascript-6 react-hooks antd

我的 React 应用程序中使用 hooks 和 es6 有 CRUD 功能。 我也在使用 AntDesign 列表组件。在我的添加函数中,第一次添加后,预计它已添加到列表中。

enter image description here

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

enter image description here

这是我的代码

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);

enter image description here

最佳答案

嘿,因为您需要向数组添加新项目,所以不需要 useEffect Hook

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

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

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

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

关于javascript - 在现有数组中添加数组中的新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58572593/

相关文章:

javascript - !() 在 JavaScript 中是什么意思

node.js - 为特定模块编写测试时如何使用绝对导入路径

javascript - 如何区分 jquery 中 keydown 上的键 "5"和 "%"?

javascript - 暂停javascript异步功能直到用户操作

javascript - 在 Azure 移动服务上使用服务器端脚本修改响应

javascript - React useState 与 webpack-dev-server 一起使用时未定义

reactjs - 我的测试无法与带有 typescript 的 react 测试库一起使用

javascript - 在 React 元素中将 videojs 播放器放入 16/8 div

java - 请求被拒绝,因为没有找到多部分边界

javascript - slider 图像需要一些时间来加载。