javascript - 将新的对象数组附加到状态 React Hooks 的当前对象
问题描述
这是我目前的数据
const [propertyData, setPropertyData] = useState({
propertyName: '',
contacts: [
{
contactName: 'Person1',
contactNumber: 'Number1',
},
{
contactName: 'Person2',
contactNumber: 'Number2',
},
]
})
我想要实现的是添加另一个对象来contacts
喜欢这个
contacts: [
{
contactName: 'Person1',
contactNumber: 'Number1',
},
{
contactName: 'Person2',
contactNumber: 'Number2',
},
{
contactName: 'Person3',
contactNumber: 'Number3',
},
]
我正在做的是这个
setPropertyData({
...propertyData,
contacts: [{ ...propertyData.contacts, contactPerson: 'Person3', contactNumber: 'Number3', }]
})
但它的作用是只用新数据更新当前数据,而没有像这样的旧数据
contacts: [
{
contactName: 'Person3',
contactNumber: 'Number3',
},
]
我总是对使用扩展运算符感到困惑,特别是如果它是一个数组或我必须附加到的对象。请帮忙。谢谢!
解决方案
您可以使用此语法将新对象添加到对象数组中:
setPropertyData({
...propertyData,
contacts: [...propertyData.contacts, { contactPerson: 'Person3', contactNumber:
'Number3' }]
})
推荐阅读
- c# - 当 NServiceBus Recoverability 使用通知失败时发送消息
- phabricator - 如何使用 Conduit API 获取 Phabricator diff 的内容?
- r - 无法安装 rmarkdown 软件包
- c - Turtle Graphics 程序 (C) 上的不可读输入
- android - 从商店安装应用程序时无法加载谷歌地图
- python - 修改列表中项目的一部分
- dart - Dart - 有没有办法防止在编译时向不可变列表添加元素?
- sql-server - 从 C++ 应用程序读取 Microsoft SQL Server 数据库中 BIGINT 列的插入值的问题
- vue.js - Vue + Vuetify + Axios + Django:CRUD 数据表
- python - 创建元素大于 255 的 int32 列表的 SHA1 哈希