我正在使用反应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
}
}
我知道我所做的是一个可变的,我不应该做,但至少它应该不是我的状态至少m次服用不可改变的副本国家
编辑1: 这里是我的codepen link
这真的令人困惑,你能澄清问题吗? –
更新了代码让我知道它是有道理的 –