v-if 是
➤ 用於條件性地 真實 渲染一塊元素內容
<template> 上的 v-if
v-if 是一個指令,必須依附於某個元素。但還是可以在一個 <template> 元素上使用 v-if,這只是一個不可見的包裝器元素,最後渲染的結果並不會包含這個 <template> 元素。
v-show 是
➤ 用於條件性地渲染並 顯示 一塊元素內容
v-show 僅切換了該元素上的 CSS display 屬性,且 v-show 不能在 <template> 元素上使用,也不能和 v-else 搭配。
v-if vs. v-show
v-if是 真實的 按條件渲染,在渲染切換時,條件元素區塊內的事件監聽器和子元件都會被銷毀與重建v-if在 初次 渲染時,只有當條件是true才被渲染,若為false,則不會做任何事v-show無論元素條件如何,始終會被渲染,只是切換了 CSSdisplay屬性v-if有更高的切換開銷,v-show有更高的初始渲染開銷。如果需要頻繁切換,使用v-show較好;如果在運行時綁定條件很少改變,則v-if更合適
避免 v-if v-for 同時使用
當 v-if 和 v-for 同時存在於一個元素上,v-if 由於權重較高會先被執行,這將導致 v-if 無法存取 v-for 範圍內產生的迭代項變數。
警告
不要同時使用 v-if 和 v-for,因為二者的優先級問題
