---
tags: Vue 實戰班
---
# v-if, v-else, v-else-if, v-show
官方文件:https://cn.vuejs.org/guide/essentials/conditional.html#conditional-rendering
## v-if, v-else, v-else-if
`v-if` 用於條件的方式渲染一個區塊,當指令的內容回傳為真值時會產生結構內容。
範例重點:
- 當 v-if 的結果為真值時,則會置入該區塊的結構內容
- v-else, v-else-if 則為 v-if 的延伸運用,會延續著 v-if 的結構後方
<iframe height="300" style="width: 100%;" scrolling="no" title="v-if, v-else, v-else-if, v-show-1" src="https://codepen.io/Wcc723/embed/rNEydOb?default-tab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
See the Pen <a href="https://codepen.io/Wcc723/pen/rNEydOb">
v-if, v-else, v-else-if, v-show-1</a> by Casper (<a href="https://codepen.io/Wcc723">@Wcc723</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>
## v-show
`v-show` 與 `v-if` 同樣是用來切換物件的呈現,但兩者有很大的差異:
- `v-if` 會完整移除 DOM 元素,使其從 HTML 結構上消失。當使用此方法切換 Vue 元件時,元件的生命週期會重新計算。
- `v-show` 是將物件加上 `display: none`,讓物件從視覺上不可見。
此方法運行結果與上述相同,但元素是套用 `display: none` 作為顯示上的切換。
### `v-if`、`v-show` 怎麼選擇?
- 當元件生命週期需要在顯示時重新計算,則可以使用 `v-if`,如果則否可用 `v-show`。
- 當元件隱藏時,同時需要完整移除 DOM 結構,也可使用 v-if
- v-if 與 v-for 則有另外的衝突問題,會在 v-for 章節詳細說明。
範例重點:
- 請使用開發者工具檢視畫面上的「成功、失敗」區塊,可以發現是使用 `display: none` 的方式隱藏,而不是移除整個 DOM 結構。
<iframe height="300" style="width: 100%;" scrolling="no" title="v-if, v-else, v-else-if, v-show-2" src="https://codepen.io/Wcc723/embed/zYVZWvV?default-tab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
See the Pen <a href="https://codepen.io/Wcc723/pen/zYVZWvV">
v-if, v-else, v-else-if, v-show-2</a> by Casper (<a href="https://codepen.io/Wcc723">@Wcc723</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>