簡體   English   中英

React Js:從對象數組中更新一項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM