1.v-if:
写法:
- v-if="表达式"
- v-else-if="表达式"
- v-else
适用于:切换频率较低的场景
特点:不展示的DOM元素直接被移除
注意:v-if可以和v-else-if、v-else一起使用,但要求结构不能被打断
2.v-show:
- 写法:v-show="表达式"
- 适用于:切换频率较高的场景
- 特点:不展示的DOM元素未被移除,仅仅是使用样式隐藏掉
使用v-if的时,元素可能无法获取到,而使用v-show一定可以获取到
代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="../js/vue.js"></script>
</head>
<body>
<div id="app">
<!--false隐藏 v-show做条件渲染-->
<h2 v-show="true">欢迎来到{{name}}</h2><br>
<h2 v-show="a">欢迎来到{{name}}</h2><br>
<!-- v-if做条件渲染-->
<h2 v-if="true">欢迎来到{{name}}</h2><br>
<h2 v-if="1 === 1">欢迎来到{{name}}</h2><br>
<h2>当前n的值为:{{n}}</h2>
<button @click="n++">点我n+1</button>
<div v-show="n === 1">Angular</div>
<div v-show="n === 2">React</div>
<div v-show="n === 3">Vue</div>
<div v-if="n === 1">Angular</div>
<div v-if="n === 2">React</div>
<div v-if="n === 3">Vue</div>
<!-- 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>
<!-- template搭配v-if使用,但是v-show不可以 template不会破坏项目结构-->
<template v-if="n === 1">
<h2>hello</h2>
<h2>hello</h2>
<h2>hello</h2>
</template>
</div>
<script>
Vue.config.productionTip = false
const vm = new Vue({
el: "#app",
data: {
name: "hdc",
a: true,
n: 0
}
})
</script>
</body>
</html>