条件渲染
- v-if
- v-else
- v-show
v-if、v-else实现界面切换显示
单一视图
<template>
<div>
<p v-if="show">我是if为true看到的</p>
<p v-else>我是if为false看到的</p>
</div>
</template>
<script>
export default {
data () {
return {
show:true
}
}
}
</script>
多视图
<template>
<div>
<p v-if="show">
<span>我是if为true看到的</span>
<a>哈哈哈</a>
<span>是</span>
</p>
<p v-else>
<span>我是if为false看到的</span>
<a>哈哈哈</a>
<span>是</span>
</p>
</div>
</template>
<script>
export default {
data () {
return {
show:true
}
}
}
</script>
注:同级标签不要互相嵌套
如果外层不想有渲染标签嵌套时,可用template(承载容器、不会渲染成组件)
<template>
<div>
<template v-if="show">
<span>我是if为true看到的</span>
<a>哈哈哈</a>
<span>是</span>
</template>
<template v-else>
<span>我是if为false看到的</span>
<a>哈哈哈</a>
<span>是</span>
</template>
</div>
</template>
<script>
export default {
data () {
return {
show:true
}
}
}
</script>
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( 无else )
<template>
<div>
<p v-show="show">
我是v-show
</p>
</div>
</template>
<script>
export default {
data () {
return {
show:true
}
}
}
</script>
v-show 与 v-if 区别
v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。
v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。
相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。
一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。
因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。
注:项目参考课程编写