2 回答

TA贡献1895条经验 获得超7个赞
您的整个 fido 地图回调不正确,它应该采用一个函数,您正在传递一个对象。
this.setState(prevState =>({
fido:[...prevState.fido.map({blockHash: [
...prevState.blockHash,
event.blockHash
]} )]}));
})
正确的语法是map((current, index, originalArray) => {...}).
但我认为你不需要映射任何东西,我认为你只需要传播之前状态的 fido 数组并添加新元素
this.setState(prevState =>({
fido:[...prevState.fido, event.blockHash]
}));
编辑 1
正如您所说,由于fido是静态的,因此我建议将其属性存储在一个对象中,就像您当前将其作为数组中的一个元素一样。
this.state = {
dir:"",
account: '',
name: [],
fido: {
logIndex: [],
transactionIndex: [],
transactionHash: [],
blockHash: []
},
loading: true
}
现在,当更新 fido 状态时,在之前的状态和带有新元素的blockHash数组中传播
this.setState(prevState =>({
fido: {
...prevState.fido,
blockHash: [...prevState.fido.blockHash, event.blockHash]
},
}));
OFC,如果您想要/需要保持原样,您需要正确访问该元素
this.setState(prevState =>({
fido: [{
...prevState.fido[0],
blockHash: [...prevState.fido[0].blockHash, event.blockHash]
}],
}));

TA贡献1812条经验 获得超5个赞
blockHash
不存在于状态中,它只存在于 的对象中state.fido
。在您的情况setState
下,您需要blockHash
从每个元素访问,fido
而不是从整体状态访问它。
添加回答
举报