Vue 3.0 條件渲染

2023-12-06 09:20 更新

#v-if

v-if 指令用于條件性地渲染一塊內(nèi)容。這塊內(nèi)容只會在指令的表達式返回 truthy 值的時候被渲染。

<h1 v-if="awesome">Vue is awesome!</h1>

也可以用 v-else 添加一個“else 塊”:

<h1 v-if="awesome">Vue is awesome!</h1>
<h1 v-else>Oh no ????</h1>

#<template> 元素上使用 v-if 條件渲染分組

因為 v-if 是一個指令,所以必須將它添加到一個元素上。但是如果想切換多個元素呢?此時可以把一個 <template> 元素當做不可見的包裹元素,并在上面使用 v-if。最終的渲染結果將不包含 <template> 元素。

<template v-if="ok">
  <h1>Title</h1>
  <p>Paragraph 1</p>
  <p>Paragraph 2</p>
</template>

#v-else

你可以使用 v-else 指令來表示 v-if 的“else 塊”:

<div v-if="Math.random() > 0.5">
  Now you see me
</div>
<div v-else>
  Now you don't
</div>

v-else 元素必須緊跟在帶 v-if 或者 v-else-if 的元素的后面,否則它將不會被識別。

#v-else-if

v-else-if,顧名思義,充當 v-if 的“else-if 塊”,可以連續(xù)使用:

<div v-if="type === 'A'">
  A
</div>
<div v-else-if="type === 'B'">
  B
</div>
<div v-else-if="type === 'C'">
  C
</div>
<div v-else>
  Not A/B/C
</div>

類似于 v-else,v-else-if 也必須緊跟在帶 v-if 或者 v-else-if 的元素之后。

#v-show

另一個用于根據(jù)條件展示元素的選項是 v-show 指令。用法大致一樣:

<h1 v-show="ok">Hello!</h1>

不同的是帶有 v-show 的元素始終會被渲染并保留在 DOM 中。v-show 只是簡單地切換元素的 CSS property display。

注意,v-show 不支持 <template> 元素,也不支持 v-else。

#v-if vs v-show

v-if 是“真正”的條件渲染,因為它會確保在切換過程中條件塊內(nèi)的事件監(jiān)聽器和子組件適當?shù)乇讳N毀和重建。

v-if 也是惰性的:如果在初始渲染時條件為假,則什么也不做——直到條件第一次變?yōu)檎鏁r,才會開始渲染條件塊。

相比之下,v-show 就簡單得多——不管初始條件是什么,元素總是會被渲染,并且只是簡單地基于 CSS 進行切換。

一般來說,v-if 有更高的切換開銷,而 v-show 有更高的初始渲染開銷。因此,如果需要非常頻繁地切換,則使用 v-show 較好;如果在運行時條件很少改變,則使用 v-if 較好。

#v-ifv-for 一起使用

提示

不推薦同時使用 v-ifv-for。請查閱風格指南以獲取更多信息。

v-ifv-for 一起使用時,v-if 具有比 v-for 更高的優(yōu)先級。請查閱列表渲染指南以獲取詳細信息。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號