面試題:react、vue中的key有什麼作用?(key的內部原理)
阿新 • • 發佈:2022-12-02
1.虛擬dom中key的作用:
- key是虛擬DOM物件的標識,當資料發生變化時,vue會根據“新資料”生成“新的虛擬DOM”
- 隨後vue進行“新的虛擬DOM”和“舊的虛擬DOM”的差異進行比較,比較規則如下
2.對比規則
- (1)舊虛擬DOM中找到了與新虛擬DOM相同的key:
- 若虛擬DOM中內容沒變,則直接使用之前的真實DOM
- 若虛擬DOM中內容變了,則生成新的真實DOM,隨後替換掉頁面中之前的真實的DOM
- (2)舊虛擬DOM中未找到與新虛擬DOM相同的key
- 建立新的真實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