Vue 条件渲染

Vue 条件渲染:v-showv-ifv-elsev-else-if


v-show

写法v-show="表达式"

特点:不展示的 DOM 元素未被移除,仅仅是使用样式隐藏掉

适用于:切换频率较高的场景


实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>条件渲染</title>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<div id="root">
    <h2 v-show="false">{{msg}}</h2>
</div>
</body>

<script type="text/javascript">
    new Vue({
        el: '#root',
        data: {
            msg: '你好',
        }
    })
</script>
</html>


v-if

写法

  1. v-if="表达式"
  2. v-else="表达式"
  3. v-else-if="表达式"

特点:不展示的 DOM 元素直接被移除

适用于:切换频率较低的场景

注意v-if 可以和 v-elsev-else-if 一起使用,但结构不能被打断


实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>条件渲染</title>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<div id="root">
    <h2 v-if="false">{{msg}}</h2>
</div>
</body>

<script type="text/javascript">
    new Vue({
        el: '#root',
        data: {
            msg: '你好',
        }
    })
</script>
</html>

v-else 和 v-else-if

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>条件渲染</title>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<div id="root">
    <!--    <h2 v-show="false">{{msg}}</h2>-->
    <!--    <h2 v-if="false">{{msg}}</h2>-->
    <h2>n = {{n}}</h2>
    <button @click="n++">n + 1</button>

    <h2 v-if="n===1">壹</h2>
    <h2 v-else-if="n===2">贰</h2>
    <h2 v-else-if="n===3">叁</h2>
    <h2 v-else>无</h2>
</div>
</body>

<script type="text/javascript">
    new Vue({
        el: '#root',
        data: {
            msg: '你好',
            n: 0
        }
    })
</script>
</html>


template 和 v-if

template 不会破坏 v-if 结构


实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>条件渲染</title>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<div id="root">
    <h2>n = {{n}}</h2>
    <button @click="n++">n + 1</button>

    <template v-if="n===1">
        <h2>张三</h2>
        <h2>李四</h2>
        <h2>王五</h2>
    </template>
</div>
</body>

<script type="text/javascript">
    new Vue({
        el: '#root',
        data: {
            msg: '你好',
            n: 0
        }
    })
</script>
</html>


posted @ 2022-04-10 08:57  春暖花开鸟  阅读(33)  评论(0编辑  收藏  举报