我有一些代碼,似乎工作,只是不正確。我有一個onChange
處理程序,它向其父組件發送一個密鑰和值爲setState()
。環路狀態,並檢查對象是否存在
_onAttributeChange(key, value) {
const changes = this.state.changes;
const pushObj = {key: key, value: value};
console.log(pushObj);
if (changes.length === 0) {
this.setState({changes: changes.concat([pushObj])});
} else {
changes.forEach(change => {
if (change.key === key) {
console.log('Update');
} else {
console.log('No update');
this.setState({changes: changes.concat([pushObj])});
}
});
}
}
您可以從該代碼基於關鍵數值參數看起來像{key: 1, value: 'Some Value'}
,我創建一個對象看。目標是將數組連接到數組,如果數組的長度爲0.那部分工作正常。 forEach是我遇到問題的地方。我的目標是循環遍歷狀態數組,檢查進入的change.key是否與數組中的鍵匹配,如果有,我想執行更新,否則我想再次連接以將該更改添加到數組。
所以2個問題:
首先,當第一個變化到來時,迴路正常工作,而只會控制檯日誌
Update
爲使用相同的密鑰每個連續的變化(即1)。當另一個更改進入時,它首先正常工作,並將其連接到數組,然後使用鍵2進行連續更改,它將觸發Update AND控制檯的日誌。其次,如何在不改變狀態的情況下在循環數組的同時更新更改?
我的回答有幫助嗎?如果確實如此,請考慮將其標記爲「已接受」。如果沒有,請讓我知道我可以如何幫助。 – Chris
@Chris對不起,克里斯。事實上,我前一天患上胃腸感冒,所以直到前幾天我纔回來檢查。我已經接受你的答案,因爲它絕對是解決方案! – Jake
沒問題。很高興我可以幫助:) – Chris