v-if
用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 truthy 值的时候被渲染。
<section id="app">
<div v-if = 'is'>123456</div>
</section>
<script>
const vm = new Vue ({
el:"#app",
data:{
msg:'lallalal',
is:true,
}
});
</script>
当
is:0
时也就是条件不成立时,页面会没有该元素,之有一个注释如下图 蓝色区域是该元素显示的地方
说明v-if是操作dom的
多个元素
因为 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-if 或者 v-else-if 添加“else 块”。
注意:前一兄弟元素必须有 v-if 或 v-else-if
<div v-if="Math.random() > 0.5">
33
</div>
<div v-else>
你看不见33啦
</div>
v-else-if
表示 v-if 的 “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>
v-show
根据表达式之真假值,切换元素的 display CSS 属性。
<h1 v-show="ok">Hello!</h1>
v-if 与 v-show 的区别
- v-if 是惰性的,如果在初始渲染时条件为假,则什么也不做,直到条件第一次变为真时,才会开始渲染条件块。v-show则不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。
- v-if 有更高的切换开销,v-show 有更高的初始渲染开销,如果需要非常频繁地切换,则使用 v-show 较好,如果在运行时条件很少改变,则使用 v-if 较好
- v-show不支持
<template>
元素 - v-show不支持v-else/v-else-if