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 较好
相关文章
|
7月前
|
自然语言处理 JavaScript 网络架构
js开发:请解释什么是ES6的箭头函数,以及它与传统函数的区别。
ES6的箭头函数以`=&gt;`定义,简化了函数写法,具有简洁语法和词法作用域的`this`。它无`arguments`对象,不能用作构造函数,不支持`Generator`,且不改变`this`、`super`、`new.target`绑定。适用于简短表达式,常用于异步编程和高阶函数。
45 5
|
6月前
|
jenkins Java 持续交付
一篇文章讲明白JenkinsPipelinescript指令创建和变量定义
一篇文章讲明白JenkinsPipelinescript指令创建和变量定义
289 0
|
6月前
|
JavaScript 前端开发
大事件项目55----基地址优化封装和便于以后服用
大事件项目55----基地址优化封装和便于以后服用
|
7月前
|
JavaScript 前端开发
v-show和v-if指令的共同点和不同点
v-show和v-if指令的共同点和不同点
|
7月前
|
算法 编译器 C++
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
202 0
|
JavaScript 前端开发
【Vue指令】—v-if、v-show二者用法及区别
【Vue指令】—v-if、v-show二者用法及区别
|
JavaScript 前端开发
vue中v-show和v-if指令的共同点和不同点?
vue中v-show和v-if指令的共同点和不同点?
86 0
#PY小贴士# for 循环定义的变量,循环外可以用吗?
我们知道,在 python 中要获取一个变量的值,必须是先给它赋值过,不然就是未定义。那么这个 i,代码中没有显式的赋值,在循环体之外还可以用吗?
|
自然语言处理 JavaScript 前端开发
深入理解箭头函数,学习其非常特殊且有用的特性
深入理解箭头函数,学习其非常特殊且有用的特性
124 0
深入理解箭头函数,学习其非常特殊且有用的特性
|
存储 网络协议 C语言
【CSAPP】x86-64的机器代码和原始的C代码差别巨大,一些常在C语言中隐藏的处理器状态
【CSAPP】x86-64的机器代码和原始的C代码差别巨大,一些常在C语言中隐藏的处理器状态
86 0