1. 程式人生 > 其它 >面試題:react、vue中的key有什麼作用?(key的內部原理)

面試題:react、vue中的key有什麼作用?(key的內部原理)

1.虛擬dom中key的作用:

  • key是虛擬DOM物件的標識,當資料發生變化時,vue會根據“新資料”生成“新的虛擬DOM”
  • 隨後vue進行“新的虛擬DOM”和“舊的虛擬DOM”的差異進行比較,比較規則如下

2.對比規則

  • (1)舊虛擬DOM中找到了與新虛擬DOM相同的key:
  1. 若虛擬DOM中內容沒變,則直接使用之前的真實DOM
  2. 若虛擬DOM中內容變了,則生成新的真實DOM,隨後替換掉頁面中之前的真實的DOM
  • (2)舊虛擬DOM中未找到與新虛擬DOM相同的key
  1. 建立新的真實DOM,隨後渲染到頁面

3.用index作為key可能會引發的問題:

  • 1.若對資料進行:逆序新增、逆序刪除等破壞順序操作:會產生沒必要的真實DOM更新==》介面效果沒問題,但是效率低。
  • 2.如果結構中還包含輸入類的DOM:會產生錯誤的DOM更新==〉介面有問題。

4.開發如何選擇key?

  • 1.最好使用每條資料的唯一標識作為key,比如id、手機號、身份證、學號等唯一值
  • 2.如果不存在對資料的逆序新增、逆序刪除等破壞順序操作,僅用於渲染列表用於展示,使用index作為key是沒有問題的

遍歷列表時key的作用(index作為key)

遍歷列表時key的作用(id作為key)


注意:如果沒有寫key,vue會自動將遍歷的index作為key