vue的v-if v-else複用元素機制

以前一直以爲v-if和v-else渲染的元素就應該是獨立的,直到前幾天渲染一個自定義的組件,v-if和v-else都引入了,例如

<a-form-item v-if="type===1">
    <my-select/>
</a-form-item>
<a-form-item v-else>
    <my-select/>
</a-form-item>

我以爲的是切換type會是2次渲染,組件created()也應該是調用2次,然而,只調用了1次,當時不知道原因

今天再看vue文檔時發現:vue 會盡可能高效地渲染元素,通常會複用已有元素而不是從頭開始渲染

也就是說2個模塊的內容使用的是相同的元素,則vue是直接複用,而不是從頭渲染

如果你不想要複用,則在那個組件上添加key屬性就可以了

https://cn.vuejs.org/v2/guide/conditional.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章