2 回答

TA貢獻1834條經驗 獲得超8個贊
我認為您應該重新訪問文檔,因為您所知道的不正確。
無論組件中是否有鍵,組件都會在道具或狀態更改時更新
shouldComponentUpdate 每次在渲染之前都會執行,并告訴組件是否應該重新渲染。對于常規組件,該方法只返回 true。你可以覆蓋它。純組件進行淺層檢查。
鍵僅有助于反應知道在渲染/重新渲染期間發生了什么變化。他們不會停止/禁止重新渲染。
您應該使用 shouldComponentUpdate 作為優化。

TA貢獻2051條經驗 獲得超10個贊
key和componentDidUpdate用于完全不同的目的。
從文檔中,
React 基于兩個假設實現了啟發式 O(n) 算法:
兩種不同類型的元素會產生不同的樹。
開發人員可以使用 key prop 提示哪些子元素在不同的渲染中可能是穩定的。
這意味著如果傳遞給 react 組件的鍵發生變化,react 將在 DOM 中拆除該組件表示的舊樹并創建一個新樹(卸載然后重新安裝該組件,即使除了鍵之外沒有任何變化)。
另一方面,componentDidUpdate
將在組件更新后運行,即特定組件的道具或狀態已更改。更新不會導致樹從狀態中拆除。
在通常情況下,您不應該使用 key 并讓 props/state 更改觸發componendDidUpdate并在那里處理您的邏輯。Key用于某些情況下,您有大量的狀態邏輯并且您希望將狀態邏輯重置為初始狀態,即從頭開始重新安裝您的組件。本質上,您應該避免使用 key 來卸載和重新安裝組件,因為此操作會影響性能。
添加回答
舉報