Vue.js 条件渲染 (v-if v-else v-if-else v-show)的熟练使用,一看就会
一. Vue条件渲染
分享我的学习收获希望能够帮到大家
今天为大家分享关于Vue的条件渲染(v-if v-else v-else-if v-show)
下面我们来结合代码理解
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>条件渲染</title>
<script src="../Vue.js/vue.js"></script>
</head>
<body>
<div id="root">
<!-- 使用v-show做条件渲染 a=false时h1不显示-->
<h1 v-show="a===1">如果事与愿违,那一定另有安排--{{name}}</h1>
<h2>当前的n值是:{{n}}</h2>
<!-- 使用v-if做条件渲染 在使用时不允许被打断-->
<h2 v-if='n === 1'>现在我等于1</h2>
<h2 v-else-if='n === 2'>现在我等于2</h2>
<h2 v-else-if='n === 3'>现在我等于3</h2>
<!-- v-if v-else v-else-if 用法和if else else-if 用法一样 -->
<h2 v-else>我不等于1,2,3</h2>
<button @click='n++'>点我n+1</button>
<div>@</div>
<!-- template模板只能配合v-if使用 -->
<template v-if='a===1'>
<h1>你好</h1>
<h2>可期</h2>
</template>
</div>
<script>
const vm = new Vue({
el:'#root',
data:{
name:"某某",
a:1,
n:0
}
})
</script>
</body>
</html>
1.如果我们想要控制内容是否显示我们就可以使用v-show
v-show=“a===1”>如果事与愿违,那一定另有安排–{{name}}
例如此处 v-show后面的 “表达式” 当表达式值为false时则不显示内容,或不符合表达式的条件,注:仅仅是内容不显示
2.下面我们来设置一个按钮,来控制当条件符合要求时可以显示内容,使用v-if
<h2>当前的n值是:{{n}}</h2>
<h2 v-if='n === 1'>老大</h2>
<h2 v-if='n === 2'>老二</h2>
<h2 v-if='n === 3'>老三</h2>
<button @click='n++'>点我n+1</button>
这里我们点击按钮来使n的值增加,当n等于1时老大出现,
当n等于2时老二出现,当n等于3时老三出现
3.v-if v-else v-else-if 组合使用
在Vue中v-if v-else v-else-if 也可以组合使用,即原理和js中一样
<h2>当前的n值是:{{n}}</h2>
<h2 v-if='n === 1'>老大</h2>
<h2 v-else-if='n === 2'>老二</h2>
<h2 v-else-if='n === 3'>老三</h2>
<h2 v-else>我不等于1,2,3</h2>
<button @click='n++'>点我n+1</button>
同样当n的值分别等于1,2,3 时分别显示老大,老二,老三,当n的值都不等于1,2,3时则显示不等于1,2,3.
但是在此处需要注意的是使用v-if做条件渲染 在使用时不允许被打断
4.<template></template>标签的使用
如果在代码中出现条件相同的语句,想要一次同时输出,那我们就可以使用<template>。当然也可以使用v-show ,但使用v-show 就比较繁琐,需要每条语句都添加相同的条件,若单独使用v-if会将不展示的dom元素完全删除,那么就无法调用。然而<template>就很好的解决的这个问题
<template v-if='a===1'>
<h1>你好</h1>
<h2>可期</h2>
</template>
这样我们只需要满足条件a=1,那么两个标签中的内容都会被dom捕捉,且当内容隐藏时,还可以在代码中调用。
注:template只能配合v-if使用
二.内容总结:
条件渲染:
1.v-if
写法:
(1).v-if="表达式"
(2).v-else-if="表达式"
(3).v-else="表达式"
适用于:切换频率较低的场景
特点:不展示的dom元素直接删除
注意:v-if 可以和v-else-if,v-else 一起使用,但要求结构不能被打断
2.v-show
写法:v-show="表达式"
适用于:频率较高的切换
特点:不展示的dom元素被溢移除,仅仅是样式隐藏掉
3.备注:
使用v-if时,元素可能无法获取到,未使用v-show一定能获取到
- 点赞
- 收藏
- 关注作者
评论(0)