首页 > 其他分享 >v-show和v-if的用法和区别

v-show和v-if的用法和区别

时间:2023-11-28 14:26:36浏览次数:39  
标签:false 区别 元素 else 编译 show 用法 表达式

一、用法

v-if是Vue.js中常用的条件渲染指令,根据表达式的值来动态控制元素的显示或隐藏。具体的使用方法如下:

1.基本语法

<div v-if="condition">
  <!-- content -->
</div><div v-if="condition">
  <!-- content -->
</div>

其中,v-if后面跟着一个表达式condition,如果该表达式的值为true,则显示该元素;如果该表达式的值为false,则隐藏该元素。

2.v-if和v-else

<div v-if="condition">
  <!-- content 1 -->
</div>
<div v-else>
  <!-- content 2 -->
</div>

v-if旁边可以添加v-else指令,用于控制选择不同的元素进行显示或隐藏,当v-if的表达式为false时,v-else中的内容会被显示出来。

3.v-if和v-else-if

<div v-if="condition1">
  <!-- content 1 -->
</div>
<div v-else-if="condition2">
  <!-- content 2 -->
</div>
<div v-else>
  <!-- content 3 -->
</div>

v-else-if可以用来检查多个条件,当v-if的表达式为false时,会检查v-else-if中的表达式,如果为true就执行相应的代码块,如果v-else-if的表达式也为false,则执行v-else中的代码块。

4.v-show

<div v-show="condition">
  <!-- content -->
</div>

v-show和v-if类似,用于控制元素的显示和隐藏,不同的是v-show是通过CSS的display属性来控制元素的显示和隐藏,而不是直接从DOM中删除元素。

需要注意的是,v-if和v-show的使用有所不同,如果在需要频繁切换的元素上,建议使用v-show,因为v-if会对DOM进行频繁的增删操作,而v-show仅仅只是控制CSS属性的变化,会更加高效。

以上就是v-if指令的用法,可以根据实际需求进行灵活运用。

二、区别:

1.控制手段不同:

v-show 本质上是通过css的display属性来决定是否显示

如果不显示,则为元素添加css—display:none,也就是说dom元素一直是存在的;

v-if 则是把整个dom元素进行添加或删除

2.编译过程不同:

v-show 只是简单地对css进行切换操作;

v-if 有一个编译/卸载过程,会合适地销毁和重建内部事件监听和子组件

3.编译条件不同:

v-show 都会编译,初始值为false时,只是将display设为none,但它也编译了,并且不会触发组件的生命周期

v-if 是真正的条件渲染,但只有在渲染条件为true时才会进行编译,会触发组件的生命周期

三、v-show与v-if的使用场景

v-show: 在需要非常频繁地进行切换的情况下,使用 v-show 较好

v-if:在运行时条件很少改变时,使用 v-if 较好

四.总结

由于v-if是直接操作dom元素的(增加和删除),所以开销会比v-show大

性能消耗:v-if有更高的切换消耗;v-show有更高的初始渲染消耗

标签:false,区别,元素,else,编译,show,用法,表达式
From: https://www.cnblogs.com/chenxdnote/p/17861863.html

相关文章

  • C# action,delegate,func的用法和区别
      举个委托的例子:  小明去书店买一本书。  1、买书:privatedelegatevoidBuyBook();  2、附近书店(委托的方法):publicstaticvoidBook(){MessageBox.Show("提供书籍");}  3、小明和书店建立关系(给委托绑定方法)BuyBookbuybook=newBuyBook(Book);......
  • Golang - context.TODO()和context.Background()的区别
    context.Background():上下文的默认值(创建上下文的默认起点),这个函数返回一个空context,返回值就是根节点,这只能用于最高等级(在main函数、初始化或顶级请求处理中),因为所有其他的上下文都应该从它衍生(Derived)出来context.TODO():通常用作占位符或临时解决方案,只在不确定应该使用哪种上......
  • cookie和session的区别?一文讲透
    一、问题cookie和session的区别? 二、回答1、总结如下-cookie: -cookie存储于客户端本地,即浏览器缓存 -cookie存储着sessionId,作为后台session缓存的主键,可以快速识别用户身份,减少后台请求 -问题:数据量较小,不适合存储大数据,如有些图片很大就支撑不了 -问......
  • js event.target和event.currentTarget区别
    首先本质区别是:event.target返回触发事件的元素event.currentTarget返回绑定事件的元素事例<ahref="#"class="text-nowrapdropdown-itemdropdown-footerrole-link"role="aaa"><te(ddd)>test</te(ddd)></a>event.target取得是<te(dd......
  • AddTransient、AddSingleton、AddScoped的区别
    权重:AddSingleton→AddTransient→AddScopedAddSingleton的生命周期:项目启动-项目关闭 相当于静态类 只会有一个 AddScoped的生命周期:请求开始-请求结束 在这次请求中获取的对象都是同一个 AddTransient的生命周期:请求获取-(GC回收-主动释放)每一次获取的对象都不......
  • Flask-SQLAlchemy flask-migrate mysql用法记录
    一、简介二、内容三、问题 一、简介Flask-SQLAlchemy是一个为Flask应用增加SQLAlchemy支持的扩展。它致力于简化在Flask中SQLAlchemy的使用。SQLAlchemy是目前python中最强大的ORM框架,功能全面,使用简单。ORM优缺点优点有语法提示,省去自己拼写SQL,保......
  • Java集合ArrayList,LinkedList,Vector的相同点与区别是什么?
    ✨前言✨本篇作为,java集合中ArrayList,LinkedList,Vector常用集合的分析概括,已便大家认识这三种集合的区别,和特点......
  • c语言中函数指针用法
    #include<stdio.h>#defineMAX10voidswap(int*x,int*y){inttemp;temp=*x;*x=*y;*y=temp;}voidfun(int*height,int*age){intn=10;*height=n*10;*age=n*2000;}int*createArray(intsize){......
  • stfshow misc
    misc2创建一个虚拟机,添加软盘打开即可得到......
  • HTTP 和 HTTPS 之间除了安全性区别外,还有哪些区别
    HTTP和HTTPS是两种常见的网络协议,它们都是用于在浏览器和服务器之间传输数据的。但是,它们之间也有一些重要的区别,这些区别涉及到数据的安全性、传输性能、使用成本和搜索排名等方面。本文将从以下几个方面来介绍HTTP和HTTPS的区别,本文内容大纲如下:数据的安全性HTTP协议......