3 回答

TA貢獻1799條經驗 獲得超9個贊
+=不是那樣工作的。使用擴展運算符復制數組的先前內容,然后手動添加新對象 -
}).then((res) => {
const newThing = {
id: i,
title: res.data[0].chemName,
selected: false,
key: 'sds'
};
this.setState(prevState => ({
sds: [...prevState.sds, newThing]
}))
}
你永遠不應該嘗試自己改變狀態,總是使用setState. 在這種情況下,您可以傳遞一個函數作為第一個參數,它提供以前的狀態。這樣,您可以確保this.state.sds保留所有內容,并將新對象添加到該數組中。

TA貢獻1966條經驗 獲得超4個贊
您可以嘗試使用下一個示例:
this.state.sds[this.state.sds.length] = {
id: i,
title: res.data[0].chemName,
selected: false,
key: 'sds'
}
[編輯]
就像@larz 所說的那樣,您必須使用 setState 方法來避免代碼的意外結果。
var newSds = this.stage.sds;
newSds[newSds.length] = {
id: i,
title: res.data[0].chemName,
selected: false,
key: 'sds'
};
this.setState({ sds: newSds});
你可以得到有關反應生命周期的詳細信息在這里和“狀態更新被合并”在這里
添加回答
舉報