首页 > 其他分享 >【Vue】中v-if和v-show的区别到底在哪里?

【Vue】中v-if和v-show的区别到底在哪里?

时间:2024-06-01 23:30:45浏览次数:23  
标签:Vue 区别 DOM js 渲染 show 元素

概要

      Vue.js是一种流行的JavaScript框架,用于构建交互式的Web应用程序。在Vue.js中,v-ifv-show是两个常用的指令,用于控制DOM元素的显示与隐藏。本文将介绍它们之间的区别。

整体架构流程

      Vue.js的整体架构基于虚拟DOM和响应式数据,当数据发生变化时,Vue会重新渲染组件并更新DOM。


两指令间的具体细节

  • v-if:
           Vue.js指令,根据表达式的真假值来决定是否渲染DOM元素。当条件为假时,元素及其子组件将不会被渲染到DOM中。在经过查询官方文档上是后这么说的(https://v2.cn.vuejs.org/v2/guide/conditional.html#v-if-vs-v-show),v-if 是“真正”的条件渲染,在初始渲染时条件为假,则什么也不做直到条件第一次变为真时,才会开始渲染条件块。以下是我用简单的一段代码进行演示:

    <template>
      <div class="container">
        <h1 v-if="msg === true">今天天气下雨</h1>
        <h1 v-else>今天天气晴朗</h1>
        <button @click="changeMsg">改变状态</button>
        <hr>
        <h1 v-show="thing === true">睡觉</h1>
        <h1 v-show="thing === false">吃饭</h1>
        <button @click="changeThing">改变事情</button>
      </div>
    
    </template>
    
    <script>
    export default {
      name: 'HelloWorld',
      data(){
        return{
          msg:true,
          thing:true,
        }
      },
      methods: {
          changeMsg(){
            this.msg = !this.msg  
          },
          changeThing(){
            this.thing = !this.thing  
          }
        },
    }
    </script>
    
    <style scoped>
    
    </style>
    
           这段代码中定义两个数值,点击按钮切换对应文字,实现了最简单的条件渲染。运行在浏览器我们可以看到v-if渲染的,当状态值改变时,是将dom元素整个添加或删除。

  • v-show:
           Vue.js指令,根据表达式的真假值来控制DOM元素的显示与隐藏,通过CSS的display属性实现。即使条件为假,元素仍然会被渲染到DOM中,只是通过CSS样式的控制来隐藏。
           

         同样借助上面的代码实现分割线下面的内容渲染,v-show在渲染时,是将原有属性用display:none实现隐藏,dom元素依旧还在。

小结

  本文就讲到这里啦!另外还需注意的是,两条指令也有优先级。v-if的优先级高于v-show。这意味着如果同时在同一个元素上使用了v-ifv-show指令,v-if的条件优先于v-show的显示与隐藏。

标签:Vue,区别,DOM,js,渲染,show,元素
From: https://blog.csdn.net/m0_74287868/article/details/139352926

相关文章

  • 重排和重绘的区别,什么情况下会触发这两种情况
    重排(Reflow)和重绘(Repaint)是Web前端开发中关于浏览器渲染机制的两个核心概念。它们之间的主要区别以及触发条件如下:重排(Reflow)定义:重排也称为布局(Layout),当元素的几何属性(如宽、高、位置)或内容、可见性发生变化时,浏览器需要重新计算元素及其子元素的布局信息,包括它们的位置和......
  • Vue插槽与作用域插槽
    title:Vue插槽与作用域插槽date:2024/6/1下午9:07:52updated:2024/6/1下午9:07:52categories:前端开发tags:VueSlotScopeSlot组件通信Vue2/3插槽作用域API动态插槽插槽优化第1章:插槽的概念与原理插槽的定义在Vue.js中,插槽(Slots)是一种强大的功能,它允许你......
  • ref和reaction的区别(以及TS中ref,computed函数会自动推断定义其泛型(一般不用自己动手))
    其次就是了解ref,reactive的区别。ref通过对象名.value来访问对象里的值,若对象里还有属性则访问其需要:对象名.value.属性名reactive则通过:对象名.属性名,来直接访问属性值其次,两者都是响应式对象。但如果对直接对reactive对象进行赋值,那么其会丢失响应性。代码示例如下:<scri......
  • Vue-router之页面跳转
    目录1.Vue Router1.1VueRouter的简介1.2安装1.3创建路由器实例2.router-link页面跳转2.1.router-link简介2.2使用路由对象的query属性进行传参1.Vue Router1.1VueRouter的简介官方文档见:https://router.vuejs.org/zh/introduction.htmlhttps://router.v......
  • 基于uniapp+vue+nodejs高校食堂餐厅点餐系统2x2v4 小程序hbuilderx
    近年来,我国餐饮业发展的质量和内涵发生了重大的变化。行业的经营领域和市场空间不断变化,经营档次和企业管理水平不断提高,经营业态日趋丰富,投资主体和消费需求多元化特点更加突出,网点数量和人员队伍继续扩大;餐饮市场更加繁荣,消费的个性化和特色化的趋势明显,追求健康营养和连锁规......
  • 解决OpenCV读取目标图像,cv2.imshow出现闪退的问题
    前言本文是该专栏的第17篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。最近有粉丝朋友询问到OpenCV读取目标图像出现的一个问题,在基于python语言“使用OpenCV读取目标图像的时候,利用cv2.imshow函数出现闪退”的情况。而本文,笔者将详细介绍针对上述问题,给出一个详......
  • vue3随笔
    vite:相比webpack webpack先通过入口文件找依赖 然后打包bounder然后启动devServervite 直接启动devServer然后找依赖模块由浏览器去请求本地服务返回依赖模块项目越多模块越大vite越好效率提升静态提升 静态节点 没有动态绑定的内容会提升到render函......
  • vue3 && uni-app 中小程序实现 底部tabbar 中间凸起部分 或者说自定义底部tabbar [保
    1、先来看一下效果2、代码实现 我们还是在pages.json 中正常配置我们底部的tabbar但是需要添加一个字段 "custom":true,//开启自定义tabBar 不填每次原来的tabbar在重新加载时都回闪现3、在pages同一级或者里面创建一个子组件用来放我们的模版 4、在......
  • Facebook代理商&Facebook三不限户、二不限户、BM户的区别
    随着全球化的发展,人们之间的交流和交易越来越频繁,越来越多的人开始使用互联网来处理自己的事务。这其中,Facebook(脸书)作为全球最大的社交媒体平台之一,拥有海内外两种不同类型的账户——Facebook海外户和国内户。今天我们来了解一下这两者有什么区别。Facebook海外户和国内户的......
  • Vue3的自动化测试怎么做?详细说明一下常用的测试工具和框架
    随着前端技术的飞速发展,Vue3作为一个优秀的前端框架,已经广泛应用于各类项目中。在开发过程中,为了提升代码质量、减少运维成本,自动化测试变得尤为重要。不仅可以提高开发效率,还能确保产品的稳定性。那么,Vue3自动化测试该怎么做呢?本文将详细介绍常用的测试工具和框架。为......