Vue核心⑦(条件渲染)

导读:本篇文章讲解 Vue核心⑦(条件渲染),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

也许你感觉自己的努力总是徒劳无功,但不必怀疑,你每天都离顶点更进一步。今天的你离顶点还遥遥无期。但你通过今天的努力,积蓄了明天勇攀高峰的力量。加油!

条件渲染

v-show

隐藏元素,但是在网页源码中的结构仍然存在
例如:

<body>
    <div id="root">
        <h1>这是数字{{n}}</h1>
        <h1 v-show="n===1">我出现了</h1>
        <h1 v-show="n===1">我还出现</h1>
        <h1 v-show="n===1">我再出现</h1>
        <button @click="n++">点我数字变大</button>
    </div>    
</body>
<script>
    new Vue({
        el:'#root',
        data:{
            n:0
        }
    })
</script>

结果:
在这里插入图片描述

v-if

隐藏元素,但是结构在源码中不再存在。(相当于在DOM中把这个节点删除了)

所以在需要隐藏大量的结点的时候,最好使用show效率更高。频繁的操作增删DOM节点的效率肯定不及第一种效率高。

既然存在v-if那么也会存在v-else-ifv-else,他们的语义和if、else if、else是一样的。

例如:

<body>
    <div id="root">
        <h1>这是数字{{n}}</h1>
        <h1 v-if="n===1">我出现了</h1>
        <h1 v-else-if="n===1">我还出现</h1>
        <h1 v-else-if="n===1">我再出现</h1>
        <button @click="n++">点我数字变大</button>
    </div>    
</body>
<script>
    new Vue({
        el:'#root',
        data:{
            n:0
        }
    })
</script>

结果:
在这里插入图片描述
将三者组合:

<body>
    <div id="root">
        <h1>这是数字{{n}}</h1>
        <h1 v-if="n===1">我出现了</h1>
        <h1 v-else-if="n===1">我还出现</h1>
        <h1 v-else-if="n===1">我再出现</h1>
        <h1 v-else>我最先出现</h1>
        <button @click="n++">点我数字变大</button>
    </div>    
</body>
<script>
    new Vue({
        el:'#root',
        data:{
            n:0
        }
    })
</script>

结果:
在这里插入图片描述

注意:一旦使用这一系列的if语法,那么元素之间是不允许被打断的。例如:
在这里插入图片描述
这样的话只有前面的两行成立

v-if与template的组合使用

我们现在想要把三个段落一起显示。如果全用if来判断效率不高。
在这里插入图片描述

我们的第一想法是将三个段落放到一个div当中去,然后去控制div的显示与隐藏。
在这里插入图片描述

这种做法确实可以,但是美中不足之处就是破坏了结构。这有可能导致css选择器得不到相应的元素了。所以此处我们可以引入template模板

在这里插入图片描述

template模板:其最大的特点就是不影响结构。在最终渲染的时候会去掉template标签

在这里插入图片描述

注意:template模板只能和v-if搭配使用,不能和v-show搭配使用。

总结

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/122132.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!