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

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

為什么我的拼接刪除了除第一個以外的所有拼接而不是僅刪除指定的拼接?

為什么我的拼接刪除了除第一個以外的所有拼接而不是僅刪除指定的拼接?

BIG陽 2023-05-11 10:18:20
對于給定的數組,當我運行拼接時,除了第一個條目之外的所有內容都被刪除。但是我希望只刪除選定的條目。我懷疑這與我的 i 設置方式有關,但我不確定問題出在哪里。removethisone = (i) => {this.setState(state=>({list: state.list.splice(i,1)}))}    <ul>    {this.state.list.map((entry, i)=><li key={i}><button onClick={this.removethisone}>{i+1}</button>{entry}</li>)}    </ul>
查看完整描述

2 回答

?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

發生這種情況的原因是因為該Array.splice方法返回數組中刪除的項目。


你需要做這樣的事情:


removethisone = (i) => {

  this.setState(state => {

    const nextState = [ ...state.list ]

    nextState.splice(i, 1)


    return { list: nextList }

  })

}

例如,運行下面的代碼以查看輸出:


// This is what your code does

let numbers = [1, 2, 3, 4, 5];

let removedNumbers = numbers.splice(2, 1)

numbers = removedNumbers


console.log(numbers);

console.log(removedNumbers);


查看完整回答
反對 回復 2023-05-11
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

您的代碼完全按照您的描述工作,因為這就是splice 的工作方式。

splice 方法返回被刪除的項目的數組。您正在將移除的項目存儲回狀態。因此,為什么你得到你刪除的東西。

removethisone = (i) => {

? this.setState(state => {

? ? const list = state.list;

? ? const removedElems = list.splice(i, 1);

? ? console.log(removedElems);

? ? return {

? ? ? list

? ? }

? })

}


查看完整回答
反對 回復 2023-05-11
  • 2 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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