如何区分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 相关文章推荐
MultiSelect左右选择控件的设计与实现介绍
Jun 08 Javascript
js 判断文件类型并控制表单提交示例代码
Nov 14 Javascript
javascript验证上传文件的类型限制必须为某些格式
Nov 14 Javascript
jQuery实现简单的DIV拖动效果
Feb 19 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
Apr 01 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
Oct 28 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
May 26 Javascript
vue2 中如何实现动态表单增删改查实例
Jun 09 Javascript
jQuery实现的简单图片轮播效果完整示例
Feb 08 jQuery
使用svg实现动态时钟效果
Jul 17 Javascript
js实现飞机大战小游戏
Aug 26 Javascript
jQuery实现鼠标拖动图片功能
Mar 04 jQuery
谈谈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
PHP正则提取不包含指定网址的图片地址的例子
2014/04/21 PHP
3款值得推荐的微信开发开源框架
2014/10/28 PHP
php json转换成数组形式代码分享
2014/11/10 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
javascript forEach通用循环遍历方法
2010/10/11 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
2016/05/28 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
微信小程序开发入门基础教程
2017/04/19 Javascript
React-router v4 路由配置方法小结
2017/08/08 Javascript
深入理解Angularjs 脏值检测
2018/10/12 Javascript
详解vue路由
2020/08/05 Javascript
在Python的while循环中使用else以及循环嵌套的用法
2015/10/14 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
Python对多属性的重复数据去重实例
2018/04/18 Python
python模拟表单提交登录图书馆
2018/04/27 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
django在开发中取消外键约束的实现
2020/05/20 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
加拿大探亲邀请信
2014/01/28 职场文书
家长给小学生的评语
2014/01/30 职场文书
采购类个人求职的自我评价
2014/02/18 职场文书
祖国在我心中的演讲稿
2014/05/04 职场文书
结婚通知短信大全
2015/04/17 职场文书
工作经历证明范本
2015/06/15 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript