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

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

React - 刪除數(shù)組的其余部分而不是僅刪除一項(xiàng)

React - 刪除數(shù)組的其余部分而不是僅刪除一項(xiàng)

隔江千里 2024-01-18 16:17:59
這是鏈接: https: //codesandbox.io/s/heuristic-heisenberg-9cxb9我有這個(gè)方法:deleteItem這段代碼:  return {    monsters: prevState.monsters      .slice(0, deleteItemPosition)      .concat(        prevState.monsters.slice(          deleteItemPosition + 1,          prevState.monsters.length        )      )  };這是我用來從數(shù)組中刪除 itemPosition 位置上的項(xiàng)目的代碼,因?yàn)閙onsters.splice(deleteItemPosition, 1)由于不變性我無法使用。那么為什么我的怪物數(shù)組從deleteItemPosition到最后都會被切斷呢?自己嘗試一下,在“要?jiǎng)h除的索引”中輸入 0-5 的數(shù)字如果我更新行l(wèi)et deleteItemPosition = this.state.deleteItemPosition;我將其硬編碼為let deleteItemPosition = 3;然后我注意到位置 3 上的項(xiàng)目如我所愿被刪除了。
查看完整描述

2 回答

?
開心每一天1111

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊

您的deleteItem函數(shù)可以像這樣簡化,同時(shí)確保不會跳過任何狀態(tài)更新:


deleteItem = () => {

    this.setState(prevState => {

      return { monsters: prevState.monsters.filter((_, i) => i !== +prevState.deleteItemPosition)};

    })

};

建議進(jìn)行功能更新,因?yàn)槟男聽顟B(tài)(新怪物陣列)取決于之前的狀態(tài)。


更新:


您可以使用解構(gòu)來避免prevState一直使用。并且您需要將 轉(zhuǎn)換deleteItemPosition為數(shù)字,因?yàn)檩斎氲闹凳亲址?/p>


deleteItem = () => {

    this.setState(({monsters, deleteItemPosition}) => {

      return { monsters: monsters.filter((_, i) => i !== +deleteItemPosition)};

    })

  };


查看完整回答
反對 回復(fù) 2024-01-18
?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

只需對數(shù)組進(jìn)行淺表復(fù)制monsters,應(yīng)用Array.prototype.splice刪除項(xiàng)目的方法并返回復(fù)制的monsters數(shù)組。


const copyMonsters = [...prevState.monsters];

copyMonsters.splice(deleteItemPosition, 1);


return {

  monsters: copyMonsters

}

將此代碼放入setState您的案例的函數(shù)中。


查看完整回答
反對 回復(fù) 2024-01-18
  • 2 回答
  • 0 關(guān)注
  • 234 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號