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 较好
相关文章
|
3月前
|
存储 编译器
【C深剖】变量定义与数据存取本质
【C深剖】变量定义与数据存取本质
|
5月前
|
jenkins Java 持续交付
一篇文章讲明白JenkinsPipelinescript指令创建和变量定义
一篇文章讲明白JenkinsPipelinescript指令创建和变量定义
258 0
|
5月前
|
自然语言处理 Java 程序员
PL真有意思(六):子程序和控制抽象
PL真有意思(六):子程序和控制抽象
|
6月前
|
JavaScript 前端开发
v-show和v-if指令的共同点和不同点
v-show和v-if指令的共同点和不同点
|
6月前
|
算法 编译器 C++
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
167 0
|
6月前
|
缓存 JavaScript 前端开发
揭秘`v-if`和`v-show`的区别:选择正确指令的技巧(下)
揭秘`v-if`和`v-show`的区别:选择正确指令的技巧(下)
|
6月前
|
JavaScript 前端开发
揭秘`v-if`和`v-show`的区别:选择正确指令的技巧(上)
揭秘`v-if`和`v-show`的区别:选择正确指令的技巧(上)
|
11月前
|
JavaScript 前端开发
【Vue指令】—v-if、v-show二者用法及区别
【Vue指令】—v-if、v-show二者用法及区别
|
安全
RxSwift特征序列Driver的使用,以及共享附加作用与非共享附加作用的区别?
RxSwift特征序列Driver的使用,以及共享附加作用与非共享附加作用的区别?
172 0
|
JavaScript 前端开发
vvue基础指令和基础属性
vue基础指令和基础属性