第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何使用反應正確更新數組中的狀態(tài)?

如何使用反應正確更新數組中的狀態(tài)?

寶慕林4294392 2021-10-29 17:08:40
在上一個問題中,我得到了有關如何更新數組的答案,這是通過以下方式實現(xiàn)的:onClick(obj, index) {  if (data.chosenBets[index]) {    // Remove object.    data.chosenBets.splice(index, 1);  } else {    // Add object.    data.chosenBets.splice(index, 0, obj);   }}這不會在我的 UI 中觸發(fā)重新渲染。如何在觸發(fā)重新渲染時更新數組(以與上述相同的方式)?
查看完整描述

3 回答

?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

我假設您已經在您的州保存了該數組。然后你可以做這樣的事情:


onClick = (idx) => {

  let arr = [...this.state.arrayToModify];

  arr.splice(idx,1);

  this.setState({ arrayToModify: arr });

}

希望這可以幫助!


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

TA貢獻1785條經驗 獲得超8個贊

只是改變一個狀態(tài)不會觸發(fā)重新渲染。您需要調用setState()函數:


// class component

onClick = () => {

  // update state

  this.setState(newState);

}


// functional component

...

  const [ state, setState ] = useState();


  ...


  setState(newState);

此外,執(zhí)行不可變狀態(tài)更新非常重要,因為 React 通常依賴于 refs(尤其是在使用memo()或 時PureComponent)。因此,最好使用相同的項目創(chuàng)建新的數組實例。


onClick(obj, index) {

  let newData;

  if (data.chosenBets[index]) {

    newData = data.slice();

    newData.chosenBets.splice(index, 1);

  } else {

    newData = [ obj, ...data ]; 

  }


  setState(newData);

}

并且您始終可以使用一些庫進行不可變更新,例如immer、object-path-immutable等。


查看完整回答
反對 回復 2021-10-29
?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

在編寫 React 代碼時盡量避免使用不純函數。在這里,拼接是一種不純的方法。我建議使用以下代碼:


onClick(obj, index) {

  if (this.state.data.chosenBets[index]) {

    // Remove object.

    const data = {

        ...this.state.data,

        chosenBets: this.state.data.chosenBets.filter((cBet, i) => i !== index)

    };

    this.setState({ data });

  } else {

    // Add object.

    const data = {

        ...this.state.data,

        chosenBets: [ ...this.state.data.chosenBets, obj ]

    };

    this.setState({ data }); 

  }

}


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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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