2021-09-10 v-if和v-show的异同和用法

简答
v-if是局部编译/卸载的过程,初始如果是false就不会编译了
v-show是display:none,即使初始是none也会编译
共同点

都可以动态地显示或隐藏DOM元素

不同点
区别v-ifv-show
手段动态地向DOM树添加/删除DOM设置DOM元素的display样式控制是否隐藏
编译过程切换有个局部编译/卸载的过程,切换过程中销毁/重建内部的事件监听和子组件基于css切换
编译条件初始条件为假时什么也不做,只有为真才开始编译任何条件下都被编译并保留DOM
性能消耗有更高的切换消耗有更高的初始渲染消耗
使用场景适合不频繁改变的运营条件适合频繁切换
示例

代码:

<div id="app">
    <div>
        <!-- 实际操作中,不推荐用v-if..v-else -->
        <div v-if="score>=90">优秀</div>
        <div v-if="score>=60&&score<90">及格</div>
        <div v-if="score<60">不及格</div>
    </div>
    <div>
        <div v-show="flag">
            时隐时现
        </div>
        <button type="button" @click="fn">点击隐藏/显示</button>
    </div>
</div>
<script>
    new Vue({
        el:"#app",
        data:{
            score:75,
            flag:true
        },
        methods:{
            fn(){
                this.flag=!this.flag
            }
        }
    });
</script>

结果:

1.score为75时输出及格
2.点击按钮选择隐藏或显示标签
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端OnTheRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值