条件渲染
符合某些条件,就给你渲染某些东西;不符合条件,要渲染的东西就不会显示
原生可以通过display:none;、visibility: hidden;、opacity: 0;几种方式实现
v-if和v-else-if、v-else需要作为一组指令使用,中间不允许被打断,v-else是不需要加表达式的
只能配合v-if使用,不能配合v-show使用
标签的特点是不影响结构,最终渲染时,标签就会消失
条件渲染:
1.v-if:结构直接没了
写法:
(1).v-if="表达式"
(2).v-else-if="表达式"
(3).v-else="表达式"
适用于:显示、隐藏切换频率较低的场景。
特点:不展示的DOM元素直接被移除。
注意:v-if可以和:v-else-if、v-else一起使用,但要求结构不能被“打断”。
2.v-show:等价于style='display:none;',结构还在
写法:v-show="表达式"
适用于:显示、隐藏切换频率较高的场景。
特点:不展示的DOM元素未被移除,仅仅是使用样式隐藏掉
3.备注:使用v-if的时,元素可能无法获取到【v-if='false'的情况下,所在的结构直接没有了所以不会获取到元素】,而使用v-show一定可以获取到【即使是v-show='false',结构也还在】。
<body>
<!-- 准备好一个容器-->
<div id="root">
<h2>当前的n值是:{{n}}</h2>
<button @click="n++">点我n+1</button>
<!-- 使用v-show做条件渲染 -->
<!-- <h2 v-show="false">欢迎来到{{name}}</h2> -->
<!-- <h2 v-show="1 === 1">欢迎来到{{name}}</h2> -->
<!-- 使用v-if做条件渲染 -->
<!-- <h2 v-if="false">欢迎来到{{name}}</h2> -->
<!-- <h2 v-if="1 === 1">欢迎来到{{name}}</h2> -->
<!-- v-else和v-else-if -->
<!-- <div v-if="n === 1">Angular</div>
<div v-else-if="n === 2">React</div>
<div v-else-if="n === 3">Vue</div>
<div v-else>哈哈</div> -->
<!-- v-if与template的配合使用 -->
<template v-if="n === 1">
<h2>你好</h2>
<h2>尚硅谷</h2>
<h2>北京</h2>
</template>
</div>
</body>
<script type="text/javascript">
Vue.config.productionTip = false
const vm = new Vue({
el:'#root',
data:{
name:'尚硅谷',
n:0
}
})
</script>