1. 程式人生 > 其它 >vue 相鄰自定義元件渲染錯誤正確的開啟方式

vue 相鄰自定義元件渲染錯誤正確的開啟方式

話不多說看問題: 當封裝自定義元件時例如(自定義下拉列表)兩個相同的元件在多次v-if變化時偶爾會發生渲染錯誤,明明賦值正確但是組建中的ajax方法可能返回的資料亂掉,或者其他神邏輯錯誤。

經過查詢發現正確的做法,在官網中已經明示: key 預期:number | string key 的特殊屬性主要用在 Vue 的虛擬 DOM 演算法,在新舊 nodes 對比時辨識 VNodes。如果不使用 key,Vue 會使用一種最大限度減少動態元素並且儘可能的嘗試修復/再利用相同型別元素的演算法。使用 key,它會基於 key 的變化重新排列元素順序,並且會移除 key 不存在的元素。

有相同父元素的子元素必須有獨特的 key。重複的 key 會造成渲染錯誤。 最常見的用例是結合 v-for:

<ul>
<li v-for="item in items" :key="item.id">...</li>
</ul>

它也可以用於強制替換元素/元件而不是重複使用它。當你遇到如下場景時它可能會很有用:

》完整地觸發元件的生命週期鉤子

》觸發過渡

例如:

<transition>
<span :key="text">{{ text }}</span>
</transition>

{{ text }} 當 text 發生改變時, 會隨時被更新,因此會觸發過渡。 ~~~~~~~~~ 所以處理的方法就是給自定義元件增加 key 區分不同 。 具體內容請參見 x乎 答案 https://www.zhihu.com/question/61064119