Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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中更新状态_Javascript_Reactjs - Fatal编程技术网

Javascript 在react中更新状态

Javascript 在react中更新状态,javascript,reactjs,Javascript,Reactjs,我正在使用react js。在存储在我的状态中的数组中,我在用户操作中更新该数组。然后我检查这个数组的和,如果它超过了我显示的错误。现在问题发生了,它显示了错误,但仍然更新了值 updateValuePercent = key => { let MixDataTemp = [...this.state.MixData]; let MixData = [...MixDataTemp]; let reduceValue = 0.005 / 4; MixData.map(da

我正在使用react js。在存储在我的状态中的数组中,我在用户操作中更新该数组。然后我检查这个数组的和,如果它超过了我显示的错误。现在问题发生了,它显示了错误,但仍然更新了值

 updateValuePercent = key => {
    let MixDataTemp = [...this.state.MixData];
    let MixData = [...MixDataTemp];

let reduceValue = 0.005 / 4;
MixData.map(data => {


        data.mix.map(name => {

          if (name.pk === key.pk) {

                name.volume = name.volume - 0.005;

          } else {

            name.volume = name.volume - reduceValue;

            } 
          return name;
        });
        return data;

    });
  let nwSum = updatedData

      .map(data => data.mix)
      .map(data => data.volume)
      .reduce((a, b) => a + b);
if (nwSum <= 1) {//condition to update the data
      this.setState({
        MixData: updatedData,
        MixError: ''
      });
    } else {
      this.setState({ MixError: 'values can not go beyond one' });//showing error on page still updating the state
    }
}
updateValuePercent=key=>{
让MixDataTemp=[…this.state.MixData];
让MixData=[…MixDataTemp];
设还原值=0.005/4;
MixData.map(数据=>{
data.mix.map(name=>{
if(name.pk==key.pk){
name.volume=name.volume-0.005;
}否则{
name.volume=name.volume-reduceValue;
} 
返回名称;
});
返回数据;
});
设nwSum=updatedata
.map(data=>data.mix)
.map(数据=>data.volume)
.减少((a,b)=>a+b);

如果(nwSum如果您真的不想显示状态中的
MixData
值,我会明确告诉React它为null(或者某个值向用户表明它不能递增),即:


祝你好运!

如果你真的不想显示状态中的
MixData
值,我会明确告诉React它为null(或者某个值向用户表明它不能递增),即:


祝你好运!

这真的让人困惑,你能澄清问题吗?更新代码让我知道它有意义这真的让人困惑,你能澄清问题吗?更新代码让我知道它有意义但有一件事状态不应该用新值更新,对吗?因为我没有根据你的代码更新状态您没有为
MixData
提供值,因为您没有在
this.setState
中提供值。但是,如果您可以提供一个fiddle,则调试会更容易。但是有一件事state不应该用新值更新,对吗?因为我没有根据您的代码更新它
state
不应该为
MixData
提供值se您没有在
this.setState
中提供一个。但是,如果您可以提供一个小提琴,那么调试会更容易。
if (nwSum <= 1) {
  this.setState({
    MixData: updatedData,
    MixError: ''
  });
} else {
  this.setState({
   MixData: null,
   MixError: 'values can not go beyond one'
  });
}
this.setState({
  ...this.state,
  MixError: 'values can not go beyond one'
});