Vue.js条件渲染指令v-if及v-show

简介: Vue.js条件渲染指令v-if及v-show

一、v-if


       v-if是Vue.js的条件语句,v-if指令用于条件性地渲染一块内容,这块内容只会在指令的表达式返回true的时候被渲染。需要特别注意的是,v-if所关联的是Vue.js的动态变量。


       v-if的使用一般有两个场景:


      (1)通过条件判断展示或者隐藏某个元素或者多个元素


      (2)进行视图之间的切换


v-if基本使用示例:


    <div id="root">
        <!-- 使用v-if进行条件判断,条件为true则显示此标签,false则不显示 -->
        <p v-if="seen">现在你看到我了</p>
    </div>
    <script>
        Vue.config.productionTip = false;
        const vm = new Vue({
            el: '#root',
            data: {
                seen:true,
            },
            methods: {
            }
        })
    </script>


执行结果:



       在上面的示例中,seen是Vue.js定义的一个变量。v-if的变量值一般是true或者false,当变量值为true时则显示元素,当变量值为false时隐藏元素


v-else基本使用示例:


    <div id="root">
        <p v-if="seen">现在你看到我了</p>
        <p v-else>你看不到我了</p>
    </div>
    <script>
        Vue.config.productionTip = false;
        const vm = new Vue({
            el: '#root',
            data: {
                seen:false,
            },
            methods: {
            }
        })
    </script>


执行结果:



       上面的示例中,当seen变量值为true时,网页上显示"现在你看不到我了",当seen变量值为false时则显示"你看不到我了"。


v-else-if基本使用示例:


    <div id="root">
        <!-- v-else-if -->
        <p v-if="type==1">1</p>
        <p v-else-if="type==2">2</p>
        <p v-else="type==3">3</p>
    </div>
    <script>
        Vue.config.productionTip = false;
        const vm = new Vue({
            el: '#root',
            data: {
                type:2,
            },
            methods: {
            }
        })
    </script>


执行结果:



        上面示例中,当type变量值为1时,网页上显示"1";当type变量值为2时,网页上显示"2",当type变量值为3时,网页上显示"3"。


注意:v-else、v-else-if必须跟在v-if或者v-else-if之后。


二、v-show


       v-show是另一个条件渲染语句,用于根据条件展示元素,用法与v-if大致一样。


v-show基本使用示例:


    <div id="root">
        <p v-show="ok">Hello!</p>
    </div>
    <script>
        Vue.config.productionTip = false;
        const vm = new Vue({
            el: '#root',
            data: {
                ok:true,
            },
            methods: {
            }
        })
    </script>


执行结果:



       带有v-show的元素始终会被渲染并保留在DOM中,v-show指令使用css样式来控制元素的显示和隐藏。值得注意的是,v-show不支持<template>元素,也不支持v-else。


三、v-if与v-show的选择


       v-if和v-show都可以用来动态的控制DOM元素的显示和隐藏。


       v-if是真正的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当的销毁和重建,v-if也是惰性的,如果在初始渲染时条件为假,则什么都不做,直到第一次变为真时,才会开始渲染条件块。


       v-show就简单的多,不管初始条件是什么,元素总是会被渲染,并且只是简单的基于css进行切换


v-if和v-show的比较示例:


    <div id="root">
        <h1 v-show="seenShow">v-show:true</h1>
        <h1 v-show="notSeenShow">v-show:false</h1>
        <h1 v-if="seenIf">v-if:true</h1>
        <h1 v-if="notSeenIf">v-if:false</h1>
    </div>
    <script>
        Vue.config.productionTip = false;
        const vm = new Vue({
            el: '#root',
            data: {
                seenShow:true,
                notSeenShow:false,
                seenIf:true,
                notSeenIf:false,
            },
            methods: {
            }
        })
    </script>


浏览器Elements:



       可以看出v-if隐藏的内部元素不会被显示,Vue.js不会尝试生成对应的html代码,而v-show是通过css的display:none来控制的。


 一般来说,v-if每次插入或者移除元素时都必须生成元素内部的DOM树,因此具有更高的切换开销,而v-show有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用v-show较好;如果在运行时条件很少改变,则使用v-if较好

目录
相关文章
|
3月前
|
JavaScript 前端开发 Go
CSS 与 JS 对 DOM 解析和渲染的影响
【10月更文挑战第16天】CSS 和 JS 会在一定程度上影响 DOM 解析和渲染,了解它们之间的相互作用以及采取适当的优化措施是非常重要的。通过合理的布局和加载策略,可以提高网页的性能和用户体验,确保页面能够快速、流畅地呈现给用户。在实际开发中,要根据具体情况进行权衡和调整,以达到最佳的效果。
|
3月前
|
JavaScript
VUE学习二:事件监听(v-on)、条件判断(v-if/v-else-if/v-else)、循环遍历(v-for)
这篇文章是关于Vue.js的学习指南,涵盖了事件监听、条件判断、循环遍历、数组方法响应性、案例分析以及高阶函数的使用。
68 2
VUE学习二:事件监听(v-on)、条件判断(v-if/v-else-if/v-else)、循环遍历(v-for)
|
2天前
|
敏捷开发 人工智能 JavaScript
Figma-Low-Code:快速将Figma设计转换为Vue.js应用,支持低代码渲染、数据绑定
Figma-Low-Code 是一个开源项目,能够直接将 Figma 设计转换为 Vue.js 应用程序,减少设计师与开发者之间的交接时间,支持低代码渲染和数据绑定。
20 3
Figma-Low-Code:快速将Figma设计转换为Vue.js应用,支持低代码渲染、数据绑定
|
2月前
|
数据采集 JavaScript 搜索推荐
服务器端渲染(SSR)(Nuxt+Next.js)
服务器端渲染(SSR)技术在服务器上生成页面HTML,提升首屏加载速度和SEO效果。Nuxt.js和Next.js分别是基于Vue.js和React.js的流行SSR框架。Nuxt.js提供自动化路由管理、页面级数据获取和布局系统,支持SSR和静态站点生成。Next.js支持SSR、静态生成和文件系统路由,通过`getServerSideProps`和`getStaticProps`实现数据获取。SSR的优点包括首屏加载快、SEO友好和适合复杂页面,但也会增加服务器压力、开发限制和调试难度。选择框架时,可根据项目需求和技术栈决定使用Nuxt.js或Next.js。
|
3月前
|
JavaScript
Vue 指令速查表
【10月更文挑战第12天】Vue 指令速查表
|
2月前
|
监控 JavaScript 前端开发
Vue 异步渲染
【10月更文挑战第23天】Vue 异步渲染是提高应用性能和用户体验的重要手段。通过理解异步渲染的原理和优化策略,我们可以更好地利用 Vue 的优势,开发出高效、流畅的前端应用。同时,在实际开发中,要注意数据一致性、性能监控和调试等问题,确保应用的稳定性和可靠性。
|
3月前
|
JavaScript 开发者
vue指令的开发看这篇文章就够了!超详细,赶快收藏!
【10月更文挑战第8天】vue指令的开发看这篇文章就够了!超详细,赶快收藏!
vue指令的开发看这篇文章就够了!超详细,赶快收藏!
|
3月前
|
JavaScript 前端开发
VUE学习三:双向绑定指令(v-mode)、组件化开发(全局组件/局部组卷/组件通信)、组件化高级(slot插槽使用)
这篇文章是关于Vue.js框架中的v-model指令和组件化开发的详细教程,涵盖了从基础使用到高级功能的多个方面。
39 1
|
3月前
|
JavaScript 前端开发 开发者
VUE学习一:初识VUE、指令、动态绑定、计算属性
这篇文章主要介绍了Vue.js的基础知识,包括初识Vue、指令如v-for、v-on的使用、动态属性绑定(v-bind)、计算属性等概念与实践示例。
68 1
|
3月前
|
数据采集 存储 JavaScript
Dynamic Website 爬虫:应对动态内容与 JavaScript 渲染挑战
本文深入探讨了如何设计针对动态网站的爬虫,以采集 WIPO Brand Database 中的专利和技术信息。文章详细介绍了动态网站的挑战,包括 JavaScript 渲染、反爬虫机制和异步加载,并提出了解决方案,如使用 Selenium 模拟浏览器、代理 IP 技术和 API 抓取。最后,通过具体代码示例展示了如何实现这些技术手段。
198 0