前端小记录---v-if一些用法与v-show区别

最近在看vue相关的知识,看到各个指令,这一篇简单记录一下v-if的一些常用用法以及它和v-show的区别。


语法:

v-if="布尔值"
v-show="布尔值"

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>demo2</title>
</head>
<body>

    <div id="app">

		<input type="button" value="点击改变status值" @click="status = !status"/><br/>
        <span v-if="status"><h2>status=true,v-if</h2></span><br/>
        <span v-show="status"><h2>status=true,v-show</h2></span><br/>
    </div>

</body>
<script src="node_modules/vue/dist/vue.js"></script>
<script>
    var app = new Vue({
        el:"#app",
        data:{
            status:true
        }
    })
</script>
</html>

描述:

在vue实例中,我们增加一个数据模型status,值为true。然后定义一个名为app的html模版。里面直接比对v-ifv-show的区别,再增加个按钮,通过js表达式status = !status改变布尔值的值。

效果:

值为true:
在这里插入图片描述
点击按钮,改变,使其值为false:

在这里插入图片描述


两者区别

上面我们看到两个指令实现效果没有任何区别,但是当我们打开控制台:

在这里插入图片描述
可以看到,当布尔值为false时,使用v-if的标记块根本不渲染。而使用v-show的标记块渲染了,只不过加了个不显示的css样式。所以从性能效率上来看,平时会使用前者。


结合v-for使用v-if

直接上码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>demo2</title>
</head>
<body>

    <div id="app">

        <ul>
            <li v-for="(person,index) in array" v-if="person.gender == 'female'">{{index+1}}.{{person.name}}-{{person.age}}-{{person.gender}}</li>
        </ul>

    </div>

</body>
<script src="node_modules/vue/dist/vue.js"></script>
<script>
    var app = new Vue({
        el:"#app",
        data:{
            array:[
                {name:"leslie",age:18,gender:"male"},
                {name:"lion",age:18,gender:"female"},
                {name:"lily",age:50,gender:"female"}
            ]
        }
    })
</script>
</html>

描述:

这里在vue实例中定义了一个数组,里面装着三个对象。在html模版中的<li>标签内结合两者进行遍历数组,选出gender为female的对象并输出至屏幕上。

效果图:

在这里插入图片描述


v-if、v-else-if与v-else

这三个指令也经常会用到,顾名思义就是多层判断了。

上码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>demo2</title>
</head>
<body>

    <div id="app">

        <button @click="random = Math.random()">点击生成随机数</button><span>{{random}}</span>

        <h2 v-if="random > 0.75">random大于0.75</h2>
        <h2 v-else-if="random > 0.5">random大于0.5</h2>
        <h2 v-else-if="random > 0.25">random大于0.25</h2>
        <h2 v-else>random大于0</h2>

    </div>

</body>
<script src="node_modules/vue/dist/vue.js"></script>
<script>
    var app = new Vue({
        el:"#app",
        data:{
            random:1
        }
    })
</script>
</html>

描述:

这里的应用场景是,通过点击按钮生成一个随机数,根据随机数的大小从而进入到不同的分支。

效果图:

在这里插入图片描述
在这里插入图片描述

感谢您的观看🙏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值