[英]React Js: update one item from array of object
在我的數據庫中,我有打開時間表,我在一周中每天都有班次,當我嘗試修改一天的開放時間時,其他一天的開放時間它們被刪除
這是我的代碼來更新我的狀態數據
async handleChange(e) {
const target = e.target;
const name = target.name;
const value = target.value;
await this.setState({
opening_time: {
...this.state.opening_time,
[this.state.day]: [['1', name == '0' ? value : this.state.opening_time[this.state.day][0][1], name == '1' ? value : this.state.opening_time[this.state.day][0][2]],(name == '2' || name == '3')? ['1', name == '2' ? value : this.state.opening_time[this.state.day][1][1], name == '3' ? value : this.state.opening_time[this.state.day][1][2]]:['0']]
}
});
this.props.setData({ opening_time: JSON.stringify(this.state.opening_time) })
}
setData(data) {
this.setState({ data: { ...this.state.data, ...data } })
async send() {
console.log(this.state.data)
await callApi('post/' + this.state.id, this.state.data, 'PUT') .then(res=>{console.log(res,"yrt")
}).catch(error=>{ this.setState({visible: "echec"})})
}
這是我的開場時間格式
{"Mon":[["1", "08:00", "12:15"],["1", "14:14", "23:23"]],"Tue":[["0"],["0"]],"Wed":[["0"],["0"]],"Thu":[["0"],["0"]],"Fri":[["0"],["0"]],"Sat":[["0"],["0"]],"Sun":[["0"],["0"]]}
有人可以幫我嗎! 謝謝
使用之前的狀態來更新狀態,而不是直接在狀態內部使用 this.state。 參考 React 文檔狀態更新可能是異步的
在你的代碼中,你可以像下面這樣重寫代碼
this.setState(prevState => ({
opening_time: {
...prevState.opening_time,
[prevState.day]: [['1', name == '0' ? value : prevState.opening_time[prevState.day][0][1], name == '1' ? value : prevState.opening_time[prevState.day][0][2]],(name == '2' || name == '3')? ['1', name == '2' ? value : prevState.opening_time[prevState.day][1][1], name == '3' ? value : prevState.opening_time[prevState.day][1][2]]:['0']]
}
}));
setData(data) {
this.setState(prevState => ({ data: { ...prevState.data, ...data } })_
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.