v-show、v-if、v-for的使用
阿新 • • 發佈:2020-11-21
v-if
vs v-show
v-if
是“真正”的條件渲染,因為它會確保在切換過程中條件塊內的事件監聽器和子元件適當地被銷燬和重建。
v-if
也是惰性的:如果在初始渲染時條件為假,則什麼也不做——直到條件第一次變為真時,才會開始渲染條件塊。
相比之下,v-show
就簡單得多——不管初始條件是什麼,元素總是會被渲染,並且只是簡單地基於 CSS 進行切換。
一般來說,v-if
有更高的切換開銷,而 v-show
有更高的初始渲染開銷。因此,如果需要非常頻繁地切換,則使用 v-show
較好;如果在執行時條件很少改變,則使用 v-if
較好。
v-if
與 v-for
一起使用
注意我們不推薦在同一元素上使用 v-if
v-for
。更多細節可查閱風格指南。
當它們處於同一節點,v-if
的優先順序比 v-for
更高,這意味著 v-if
將沒有許可權訪問 v-for
裡的變數:
<!-- This will throw an error because property "todo" is not defined on instance. -->
<li v-for="todo in todos" v-if="!todo.isComplete">
{{ todo }}
</li>
可以把 v-for
移動到 <template>
標籤中來修正:
<template v-for="todo in todos"> <li v-if="!todo.isComplete"> {{ todo }} </li> </template>