如何区分vue中的v-show 与 v-if


Posted in Javascript onSeptember 08, 2020

1. v-show

不管初始的条件是什么,元素总是会被渲染,并且只是简单的基于 CSS display: none 或者 display: block 的属性进行切换。

2. v-if

会根据初始的条件(data里自己的定义的数据)来进行真正的渲染(组件真正的销毁和重建),如果条件为真,才会开始渲染条件块,如果条件为假,则不会渲染条件块。

注意: v-if不要和v-for一起使用!

当和 v-for 一起使用时,v-for 的优先级比 v-if 更高,详见 vue官网关于 v-for 的详细描述 ,为什么不能一起使用,以下我用代码来解释一下。

<ul>
 <li
 v-for = "(item, index) in list"
 v-if = "isActive"
 :key = "item.id"
 >
 {{ item.name }}
 </li>
</ul>

以上代码将会经过如下运算

this.list.map( user=> {
 if (isActive) {
 return user.name
 }
})

因此,哪怕我们只渲染一小部分元素,也得在每次重新渲染的时候遍历整个列表,不论 isActive 是否发生了变化。如果 list 的数据有很多,就会造成性能低,页面可能卡顿的现象出现。

总结

共同点:

v-if和v-show都是通过判断绑定数据的true\false来展示的

不同点:

v-if只有在判断为true的时候才会对数据进行渲染,false的时候把包含的代码进行删除。除非再次进行数据渲染,v-if才会重新判断。可以说是用法比较倾向于对数据一次操作。
v-show是无论判断是什么都会先对数据进行渲染,只是false的时候对节点进行display:none;的操作。所以再不重新渲染数据的情况下,改变数据的值可以使数据展示或隐藏。

用法推荐:

v-if更适合于带有权限的操作,渲染时判断权限数据,有则展示该功能,没有则删除。
v-show更适合于日常使用,可以减少数据的渲染,减少不必要的操作。
综上,v-if 有更高的切换消耗,而 v-show 有更高的初始渲染消耗。
因此,如果需要频繁切换 v-show 较好,如果在运行时条件不大可能改变,更倾向功能权限性的话 v-if 较好。

以上就是如何区分vue中的v-show 与 v-if 的详细内容,更多关于v-show 与 v-if 的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
js window.onload 加载多个函数的方法
Nov 02 Javascript
javascript改变position值实现菜单滚动至顶部后固定
Jan 18 Javascript
js获得鼠标的坐标值的方法
Mar 13 Javascript
php的文件上传入门教程(实例讲解)
Apr 10 Javascript
js实现可键盘控制的简单抽奖程序
Jul 13 Javascript
微信小程序之圆形进度条实现思路
Feb 22 Javascript
Node.js文件编码格式的转换的方法
Apr 27 Javascript
详解JavaScript的变量
Apr 04 Javascript
微信小程序左右滚动公告栏效果代码实例
Sep 16 Javascript
jQuery实现简单聊天室
Feb 08 jQuery
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
Mar 04 Javascript
JS加载解析Markdown文档过程详解
May 19 Javascript
谈谈JavaScript中的函数
Sep 08 #Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
Sep 08 #Javascript
浅析JavaScript 函数柯里化
Sep 08 #Javascript
Vue.js使用axios动态获取response里的data数据操作
Sep 08 #Javascript
JavaScript 事件代理需要注意的地方
Sep 08 #Javascript
Vue axios 跨域请求无法带上cookie的解决
Sep 08 #Javascript
详解JavaScript的this指向和绑定
Sep 08 #Javascript
You might like
PHP5中虚函数的实现方法分享
2011/04/20 PHP
php获取目录所有文件并将结果保存到数组(实例)
2013/10/25 PHP
php实现zip文件解压操作
2015/11/03 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
PHP实现的服务器一致性hash分布算法示例
2018/08/09 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
微信小程序 自定义复选框实现代码实例
2019/09/04 Javascript
深入解析Python中的上下文管理器
2016/06/28 Python
Python入门之三角函数atan2()函数详解
2017/11/08 Python
Python学习笔记之open()函数打开文件路径报错问题
2018/04/28 Python
Python基于多线程实现抓取数据存入数据库的方法
2018/06/22 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
Python 分布式缓存之Reids数据类型操作详解
2020/06/24 Python
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
Cynthia Rowley官网:全球领先的生活方式品牌
2020/10/27 全球购物
敏捷开发的主要原则都有哪些
2015/04/26 面试题
餐厅销售主管职责范本
2014/02/19 职场文书
家庭贫困证明书(3篇)
2014/09/15 职场文书
产品委托授权书范本
2014/09/16 职场文书
2014幼儿园家长工作总结
2014/11/10 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
水电工程师岗位职责
2015/02/13 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
闪闪的红星观后感
2015/06/08 职场文书
政审证明材料
2015/06/19 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js