2 回答

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

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