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
而不是從整體狀態訪問它。
添加回答
舉報