【发布时间】:2019-12-12 07:16:48
【问题描述】:
我有一个values 状态。这是一个空数组。
在 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 是否存在于数组中,如果不存在,则“push it”。
但它不起作用。它返回一个像这样的无限数组:
[
{ data: ... },
{ data: ... }
]
没有键的数组:/
【问题讨论】:
-
你能解决这个问题吗?
[id1: {}, id2: {}]不是有效的数据结构。它可以是[{}, {}]或{id1: {}, id2: {}}。 -
根据你上面的语法,我想你的意思是说新状态是设置一个 object,而不是一个数组:
{ 435235324: { data: ... }, 456565767: { data: ... } }
标签: javascript arrays reactjs react-hooks