v-show和v-if指令的共同点和不同点?

简介: v-show和v-if的共同点两者都能控制元素在页面是否显示在用法上也是相同的

v-show和v-if的共同点

两者都能控制元素在页面是否显示

在用法上也是相同的

<Model v-show="isShow" />
<Model v-if="isShow" />

并且:

当表达式为true的时候,都会占据页面的位置

当表达式都为false时,都不会占据页面位置

v-show和v-if的不同点

控制手段不同

v-show隐藏则是为该元素添加css样式display:none来控制的,dom元素依旧还在。v-if显示隐藏是将dom元素整个添加或删除

编译过程不同

v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件;v-show只是简单的基于css切换

编译条件不同

v-if是真正的条件渲染,它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。只有渲染条件为假时,并不做操作,直到为真才渲染


  • v-show 由false变为true的时候不会触发组件的生命周期
  • v-if由false变为true的时候,触发组件的beforeCreate、create、beforeMount、mounted钩子,由true变为false的时候触发组件的beforeDestory、destoryed方法

性能消耗

如果要频繁切换某节点,使⽤v-show(切换开销⽐较⼩,初始开销较⼤)。如果不需要频繁切换某节点使⽤v-if(初始渲染开销较⼩,切换开销⽐较⼤)

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

  • v-if 与 v-show 都能控制dom元素在页面的显示
  • v-if 相比 v-show 开销更大的(直接操作dom节点增加与删除)
  • 如果需要非常频繁地切换,则使用 v-show 较好
  • 如果在运行时条件很少改变,则使用 v-if 较好
相关文章
|
Java 数据库 Spring
【Spring Boot 快速入门】十六、Spring Boot项目中静态常量的定义方式
【Spring Boot 快速入门】十六、Spring Boot项目中静态常量的定义方式
1465 0
【Spring Boot 快速入门】十六、Spring Boot项目中静态常量的定义方式
|
3月前
|
缓存 Java 数据安全/隐私保护
Java动态代理详解
动态代理是Java中一种强大且灵活的设计模式,它允许在运行时创建代理对象,从而实现对目标对象方法的拦截与增强。通过动态代理,开发者可以在不修改原始代码的情况下,增强对象功能,适用于日志记录、事务管理、权限控制等多个场景。
|
9月前
|
人工智能 算法 大数据
数据的“潘多拉魔盒”:大数据伦理的深度思考
数据的“潘多拉魔盒”:大数据伦理的深度思考
553 25
|
9月前
|
JSON 搜索推荐 API
小红书商品列表 API 接口(小红书 API 系列)
小红书作为社交与电商结合的平台,拥有丰富的商品信息。通过小红书商品列表API接口,用户可高效、合法地获取商品数据,支持按关键词、品类等筛选条件查询,并返回JSON格式的商品列表,包含名称、图片链接、价格等信息。该接口帮助商家分析市场、制定策略,开发者构建推荐系统。示例代码展示了如何使用Python发送HTTP请求并处理响应数据。
|
存储 C语言
C语言程序设计——ASCII码
C语言程序设计——ASCII码
|
传感器 编解码 监控
如何驱动一个传感器?|学习笔记
快速学习如何驱动一个传感器?
631 0
如何驱动一个传感器?|学习笔记
|
Web App开发 数据采集 运维
SLS数据加工“事件搜索”实践
SLS数据加工函数-e_search用法以及实践
527 0
|
数据采集 Python
'str' object has no attribute 'get' 错误解决方案
'str' object has no attribute 'get' 错误解决方案
5分钟极速安装部署Oracle
5分钟极速安装部署Oracle
431 0
5分钟极速安装部署Oracle