知識(shí)點(diǎn):
v-for指令
用于展示列表數(shù)據(jù)
語法:v-for="(item,index) in xxx" :key="xxx"
可遍歷:數(shù)組,對(duì)象霉咨,字符串谐宙,指定次數(shù)毒费。
key的原理
虛擬dom中key的作用
key是虛擬DOM對(duì)象的標(biāo)識(shí),當(dāng)數(shù)據(jù)發(fā)生變化時(shí)伟阔,vue會(huì)根據(jù)【新數(shù)據(jù)】生成【新的虛擬DOM】,隨后vue進(jìn)行【新的虛擬DOM】與【舊的虛擬DOM】的差異比較辣之。比較規(guī)則如下:
對(duì)比規(guī)則
(1)舊虛擬DOM找到了與新虛擬DOM相同的key
①若虛擬DOM中內(nèi)容沒有改變,直接使用之前的真實(shí)dom.
②若虛擬DOM中的內(nèi)容改變皱炉,則生成新的真實(shí)dom,隨后替換掉頁面中之前的真實(shí)dom.
(2)舊虛擬DOM中未找到與新虛擬DOM相同的key
創(chuàng)建真實(shí)dom,渲染到頁面怀估。
使用key作為index可能會(huì)觸發(fā)的問題
(1):若對(duì)數(shù)據(jù)進(jìn)行逆序添加,逆序刪除等破壞順序的操作:
會(huì)產(chǎn)生沒有必要的真實(shí)dom的更新=》界面效果沒問題合搅,但效率低多搀。
(2):如果結(jié)構(gòu)中包含輸入類的dom
會(huì)產(chǎn)生錯(cuò)誤dom更新 =》界面有問題
3:如果不綁定key的話,vue會(huì)默認(rèn)按index綁定灾部。