8.虛擬DOM中的key

1. 虛擬DOM中key的作用:

當(dāng)狀態(tài)中的數(shù)據(jù)發(fā)生變化時,React會根據(jù)【新數(shù)據(jù)】生成【新的虛擬DOM】,隨后進(jìn)行【新虛擬DOM】和【舊虛擬DOM】的diff比較,比較規(guī)則如下:

  • 舊虛擬DOM中找到了與新虛擬DOM相同key
    • 若虛擬DOM中內(nèi)容沒變, 則直接使用之前的真實DOM
    • 若虛擬DOM中內(nèi)容變了,則生成新的真實DOM,隨后替換掉頁面中之前的真實DOM
  • 舊虛擬DOM中未找到與新虛擬DOM相同key
    • 根據(jù)數(shù)據(jù)創(chuàng)建新的真實DOM,隨后渲染到頁面

2.用index作為key可能會引發(fā)的問題

  1. 若對數(shù)據(jù)進(jìn)行逆序添加、逆序刪除等破壞順序的操作,會導(dǎo)致index錯亂,產(chǎn)生沒有必要的真實DOM更新,此時界面顯示效果沒問題,但是效率會低(相當(dāng)于重新生成所有的真實DOM)
  2. 如果結(jié)構(gòu)中還存在輸入類DOM,會產(chǎn)生錯誤的DOM更新,使得界面顯示出現(xiàn)問題
  3. 如果不存在逆序操作等破壞順序的操作,僅用于渲染列表用于展示,使用index作為key是沒有問題的。

3.在開發(fā)中如何選擇key?

  1. 最好使用每一條數(shù)據(jù)的唯一標(biāo)識作為key,例如id、身份證號碼、學(xué)號等
  2. 如果確定只是簡單地展示數(shù)據(jù),用index也是可以的。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容