v-if: 根据表达式的值的真假条件渲染元素
<h1 v-if="ok">Yes</h1>
在 <template ‘>’ 元素上使用 v-if 渲染分组,把当做包裹元素使用 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 块”,v-else 必须跟在带 v-if 或者 v-else-if 的元素后面,否则不会识别
<div v-if="Math.random() > 0.5"> Now you see me </div>
<div v-else> Now you don't </div>
v-else-if,充当 " else-if 块 ",可以连续使用,v-else-if 也必须紧跟带 v-if 或者 v-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>
用 key 管理可复用的元素: 如果不要复用它们只需添加一个具有唯一值的 key 属性即可
示例1:
/* 因为两个模板使用了相同的元素,<input> 不会被替换掉——仅仅是替换了它的 placeholder */
<template v-if="loginType === 'username'">
<input placeholder="Enter your username">
</template>
<template v-else>
<input placeholder="Enter your email address">
</template>
示例2:
<template v-if="loginType === 'username'">
/* 添加一个具有唯一值的 key 属性 */
<input placeholder="Enter your username" key="username-input">
</template>
<template v-else>
<input placeholder="Enter your email address" key="email-input">
</template>
v-show:
1、根据条件展示元素,有 v-show 的元素会保留在 DOM 中,只是切换 CSS 属性 display
2、v-show 不支持 <template’> 元素,也不支持 v-else
<h1 v-show="ok">Hello!</h1>
v-if vs v-show
1、v-if 是"真正"的条件渲染,确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建
2、v-if 也是惰性的:如果初始渲染时条件为假,什么也不做,直到条件第一次变为真时,才会渲染条件块
3、v-show : 不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换
4、如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好
v-if 与 v-for 一起使用
当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级