我正在使用反應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
這真的令人困惑,你能澄清問題嗎? –
更新了代碼讓我知道它是有道理的 –