v-if 和v-show

1、区别

  1)v-if删除dom元素

  2)v-show设置display:none

2、应用场景  

  1)v-if只修改一次的时候可以使用v-if

  2)v-show频繁切换的时候可以使用v-show

3、v-if案例

<div id='app'>
        <div v-if="score < 60">
            不及格
        </div>
        <div v-else-if="score < 70">
            及格
        </div>
        <div v-else-if="score < 80">
            中等
        </div>
        <div v-else-if="score < 90">
            良好
        </div>
        <div v-else-if="score <= 100">
            优秀
        </div>
    </div>
    <script>
        const vm = new Vue({
            el: '#app',
            data: {
                score: 65,
            }
        })
    </script>

4、v-show案例

<style>
        .box{
             200px;
            height: 200px;
            background: aqua;
        }
    </style>

    <div id='app'>
        <div class="box" v-show="flag"></div>
        <button @click="flag=!flag">显示/隐藏</button>

    </div>
    <script>
    const vm = new Vue({
        el: '#app',
        data: {
            flag:true,
        }
    })
    </script>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>v-show与v-if</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>

<body>
    <div id="app">
        <button @click='change'>切换</button>
        <p v-if='flag'>{{message}}</p>
        <div v-show='flag'>{{message}}</div>
        <div v-if="age<18">
            未成年
        </div>
        <div v-else-if="age >= 18 && age<30">
            青年
        </div>
        <div v-else-if="age >= 30 && age<50">
            壮年
        </div>
        <div v-else>
            老了
        </div>
        <button @click="age+=10">长大</button>

    </div>

    <!-- 
    v-if和v-show的区别
    v-if是通过删除元素的方式控制显示和隐藏
    v-show是通过控制display的方式控制显示和隐藏
    当我们一个元素需要频繁切换的时候,用v-show
    当一个元素状态只改变一次的时候,一般用v-if 
-->

</body>
<script>
    var vm = new Vue({
        el: "#app",
        data: {
            message: "hello Vue",
            flag: false,
            age: 10
        },
        methods: {
            change() {
                this.flag = !this.flag;
            }
        }
    })
</script>

</html>
原文地址:https://www.cnblogs.com/guirong/p/13629933.html