我有一個專案串列,每個專案都有一個狀態和事件處理程式(我正在使用 setTimeout 來模擬案例。)來更新狀態。
當我從串列中洗掉第 1 項時,第 2 項的狀態變為“aa0”而不是“bb”或“NA”。
setTimeout函式執行后,第2項的狀態恢復正常。
不幸的是,在我的真實開發環境中,可能會在專案串列更新后觸發事件。
你能告訴我為什么嗎?有沒有解決問題的最佳實踐?
這是我的源代碼供您參考:
https://stackblitz.com/edit/react-kzjznp
uj5u.com熱心網友回復:
問題是由于專案密鑰而發生的
<Item itemObj={obj} key={index} />
在洗掉專案組件的鍵之前是“0”和“1”。洗掉第一個 item 后,剩余組件的 key 變為 0,表示舊的 Item 或已洗掉的 item 組件,因此不再渲染。
您可以通過更改密鑰來修復它。In this case better don't use index, use a unique id instead在這里您可以使用專案名稱
<Item itemObj={obj} key={obj.name} />
作業代碼
https://stackblitz.com/edit/react-ldrzai?file=src/ItemList.js
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/412532.html
標籤:
