3 回答

TA貢獻1895條經驗 獲得超7個贊
您需要創建原始對象的副本,并且只更改要更新的屬性。最簡單的方法是使用對象擴展運算符:
this.setState(currentState => ({enabled: {...currentState.enabled, one: true}}));
或更詳細的形式:
this.setState(currentState => {
const enabled = {...currentState.enabled, one: true};
return {enabled};
});
如果屬性名稱僅在運行時已知,您可以這樣做:
const setEnabled = name => {
this.setState(currentState => ({enabled: {...currentState.enabled, [name]: true}}));
};

TA貢獻1785條經驗 獲得超8個贊
您可以在對象的鍵周圍使用大括號來使用變量來確定鍵
const dynamicKey = 'one';
const newObj = {[dynamicKey]: true} //equals {one: true}
由于 this.setState 僅在頂級鍵上合并,因此您必須創建當前啟用對象的副本并使用大括號表示法:
let dynamicProperty = "one"
this.setState({
enabled: {...this.state.enabled, [dynamicProperty]: true}
})
添加回答
舉報