Vue3学习笔记之条件渲染
v-if
用于条件性地渲染一块内容
只会在指令地表达式返回真值时才被渲染
<h1 v-if="awesome">Vue is awesome!</h1>
v-else
相当于v-if的“else区块”
<button @click="awesome = !awesome">Toggle</button>
<h1 v-if="awesome">Vue is awesome!</h1>
<h1 v-else>Oh no 😢</h1>
Tips:一个v-else元素必须跟在一个v-if或者v-else-if元素后面,否则它将不会被识别。
v-else-if
相当于v-if的“else if区块”
可以连续多次重复使用
<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>
Tips:一个v-else-if的元素必须跟在一个v-if或者v-else-if元素后面。
<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>
Tips:v-else和v-else-if也可以在<template>上使用
v-show
另一个可以用来按条件显示一个元素的指令,用法基本一样:
<h1 v-show="ok">Hello!</h1>
不同之处:
v-show会在DOM渲染中保留该元素
v-show仅切换了该元素上名为display的CSS属性
v-show不支持在<template>元素上使用,也不能和v-else搭配使用
v-if和v-show
v-if是真实地按条件渲染,确保了在切换时,条件区块内地事件监听器和子组件都会被销毁与重建
v-if是惰性地,如果在初次渲染时条件值为false,则不会做任何事,条件区块只有当条件首次变为true时才被渲染
v-show则元素无论初始条件如何,始终会被渲染,只有CSS的display属性会被切换
总结:v-if有更高的切换开销,v-show有更高的初始渲染开销;如果需要频繁切换则使用v-show比较好,如果运行时绑定条件很少改变,则v-if更适合
v-if和v-for
当v-if和v-for同时存在于一个元素上的时候,v-if会首先被执行。
但不推荐同时使用v-if和v-for,因为二者之间的优先级不明显。
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
咸鱼说!
喜欢就支持一下吧
打赏
微信
支付宝