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

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

如何通過索引刪除數組元素并更新反應本機功能組件中的道具?

如何通過索引刪除數組元素并更新反應本機功能組件中的道具?

至尊寶的傳說 2023-06-09 17:23:23
今天我嘗試刪除我的 react-native 組件中的一個數組但不起作用,這是 mi 代碼:  let arr = buques  await arr.splice(index, 1)  await setBuques(arr)  console.log(buques)  alert('Buque eliminado') 這可以在類組件中運行并更新道具:  removearray = (index)=>{        let arr = this.state.tags        arr.splice(index, 1)        this.setState({tags: arr})    }我在函數組件中的 .map 迭代上使用它,這會刪除數組,但不會更新類組件中的地圖迭代,它可以運行但我不明白為什么在功能組件中不起作用?有什么想法嗎?謝謝你的回答
查看完整描述

2 回答

?
人到中年有點甜

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

變性導致了這一點。

可變是一種可以更改的變量。在 JavaScript 中,只有對象和數組是可變的,原始值不是。

您需要將其更改為:

await?setBuques(await?buques.filter((el,?i)?=>?(i?===?index)))
console.log(buques)



查看完整回答
反對 回復 2023-06-09
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

今天我嘗試刪除我的 react-native 組件中的一個數組但不起作用,這是 mi 代碼:


  let arr = buques

  await arr.splice(index, 1)

  await setBuques(arr)

  console.log(buques)

  alert('Buque eliminado') 

展開片段

這可以在類組件中運行并更新道具:


  removearray = (index)=>{

        let arr = this.state.tags

        arr.splice(index, 1)

        this.setState({tags: arr})

    }

展開片段

我在函數組件中的 .map 迭代上使用它,這會刪除數組,但不會更新類組件中的地圖迭代,它可以運行


但我不明白為什么在功能組件中不起作用?有什么想法嗎?謝謝你的回答await 僅在 async 中有效,就像您可以做的那樣


const removeItem = async () => {

  let arr = buques

  await arr.splice(index, 1)

  await setBuques(arr)

  console.log(buques)

  alert('Buque eliminado');

要更新視圖中的數組,您需要更改數組數據的引用,例如


removearray = (index)=>{

        let arr = [...this.state.tags]; <-- This is trick -->

        arr.splice(index, 1)

        this.setState({tags: arr})

}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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