Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React Js:从对象数组更新一项_Javascript_Arrays_Reactjs - Fatal编程技术网

Javascript React Js:从对象数组更新一项

Javascript React Js:从对象数组更新一项,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,在我的数据库中,我有一个开放的时间表,我有一周中每天的班次, 当我试图修改一天的开放时间时,其他天的开放时间将被删除 这是我更新状态数据的代码 async handleChange(e) { const target = e.target; const name = target.name; const value = target.value; await this.setState({ opening_time: { ...t

在我的数据库中,我有一个开放的时间表,我有一周中每天的班次, 当我试图修改一天的开放时间时,其他天的开放时间将被删除


这是我更新状态数据的代码

 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) })



  }
这是我的开放时间格式

{"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']]


      }
    }));
{"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.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 } })_