亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在reactJS狀態下動態設置對象屬性的值?

如何在reactJS狀態下動態設置對象屬性的值?

慕標琳琳 2021-10-29 15:14:33
假設一個組件具有如下狀態:this.state = {  enabled: {    one: false,    two: false,    three: false  }}如何this.setState()用于設置動態屬性的值?例如,這不起作用:let dynamicProperty = "one"this.setState({  enabled[dynamicProperty]: true})但是,這確實有效,但也是不好的做法:this.enabled = {  one: false,  two: false,  three: false}let dynamicProperty = "one"this.enabled[dynamicProperty] = true;如何this.setState()用它來完成同樣的事情?
查看完整描述

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}}));

};


查看完整回答
反對 回復 2021-10-29
?
慕的地10843

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}

 })   


查看完整回答
反對 回復 2021-10-29
  • 3 回答
  • 0 關注
  • 362 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號