2、Vue在patch過程中判斷兩個節點是否是相同節點key是壹個必要條件,渲染壹組列表時,key往往是唯壹標識,所以如果不定義key的話,Vue只能認為比較的兩個節點是同壹個,哪怕它們實際上不是,這導致了頻繁更新元素,使得整個patch過程比較低效,影響性能。
3、實際使用中在渲染壹組列表時key必須設置,而且必須是唯壹標識,應該避免使用數組索引作為key,這可能導致壹些隱蔽的bug;Vue中在使用相同標簽元素過渡切換時,也會使用key屬性,其目的也是為了讓Vue可以區分它們,否則Vue只會替換其內部屬性而不會觸發過渡效果。
4、從源碼中可以知道,Vue判斷兩個節點是否相同時主要判斷兩者的key和元素類型等,因此如果不設置,它的值就是是undefined,則可能永遠認為這是兩個相同節點,只能去做更新操作,這造成了大量的DOM更新操作,明顯是不可取的。