我有一个值
状态。这是一个空数组。
在 componentDidMount 上,我从 API 获取值,此操作使用如下数组设置新状态:
[
435235324: { data: ... },
456565767: { data: ... }
]
每个数字都是一个 id。
我有每个id中新数据的websocket,所以我需要更新数组项的数据值。
我的搜索功能是:
const setNewValueToState = (id, data) => {
const exist = widgetValues[id];
console.log(exist)
if(!exist){
setWidgetValues(oldValues => [...oldValues, oldValues.id = data ])
}
}
我需要检查 id 是否存在于数组中,如果不存在,则“推送它”。
但是这不起作用。它返回一个无限数组,如下所示:
[
{ data: ... },
{ data: ... }
]
没有键的数组:/
最佳答案
[
435235324: { data: ... },
456565767: { data: ... }
]
不是一个有效的数组结构,正如其他评论所说,你应该使用对象数组
[
{
"id":123456,
"data":{
....
}
},
{
"id":1234567,
"data":{
....
}
},
]
或者使用一个对象
{
123:{
data:{}
},
1234:{
data:{}
},
}
关于javascript - 如何创建具有键值的数组并设置新状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59299480/