Vue中v-if和v-show区别与用法

570 阅读1分钟

一、v-if和v-show的异同点

1.相同点 :v-if和v-show都可以动态控制DOM元素的显示隐藏。

2.不同点:v-if是动态地向DOM树中添加或删除DOM元素节点;v-show是通过向DOM元素设置样式display属性值控制显示隐藏。我们通过一个简单的demo对比观察下:

    <div id="app">
        <div v-if="isIf"><p>我被v-if控制</p></div>
        <div v-show="isShow"><p>我被v-show控制</p></div>
        <button @click="pChange">Change</button>
    </div>
</body>
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            isIf:true,
            isShow:true
        },
        methods:{
            pChange(){
                this.isIf=(this.isIf===true?false:true);
                this.isShow=(this.isShow===true?false:true);
            }
        }
    })
</script>

image.png

这个demo用一个button按钮执行函数控制v-if和v-show的值(true/false切换),在控制台不难看出,当两个指令值都为false时,v-if控制的元素是直接从DOM树销毁的;而v-show控制的元素还在DOM树中,只是以display:none样式隐藏元素内容。

二、v-if和v-show特性总结

1.消耗方面:v-if切换性能消耗较大;v-show最初渲染消耗较大。

2.适用场景:v-if适用切换条件、项目需求稳定;v-show适用频繁需要切换。

3.语法方面:v-if可与v-else、v-else-if配合使用进行判断执行,但一定需要相邻,不可中断;v-show无特殊语法。