如何区分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 相关文章推荐
ArrayList类(增强版)
Apr 04 Javascript
Iframe thickbox2.0使用的方法
Mar 05 Javascript
Jquery 获得服务器控件值的方法小结
May 11 Javascript
javascript闭包的理解和实例
Aug 12 Javascript
使用jquery局部刷新(jquery.load)从数据库取出数据
Jan 22 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
May 28 Javascript
text-align:justify实现文本两端对齐 兼容IE
Aug 19 Javascript
JS判断两个对象内容是否相等的方法示例
Apr 10 Javascript
Vue组件通信实践记录(推荐)
Aug 15 Javascript
微信小程序模板和模块化用法实例分析
Nov 28 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
Feb 08 Javascript
三步实现ionic3点击退出app程序
Sep 17 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
关于时间计算的结总
2006/12/06 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
PHP redis实现超迷你全文检索
2017/03/04 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
利用XMLHTTP传递参数在另一页面执行并刷新本页
2006/10/26 Javascript
基于jquery的关于动态创建DOM元素的问题
2010/12/24 Javascript
js 代码优化点滴记录
2012/02/19 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
Javascript之Date对象详解
2016/06/07 Javascript
分享JS数组求和与求最大值的方法
2016/08/11 Javascript
javascript replace()第二个参数为函数时的参数用法
2016/12/26 Javascript
javascript实现的图片预览功能
2017/03/25 Javascript
vue--vuex详解
2019/04/15 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
Python中GIL的使用详解
2018/10/03 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
python regex库实例用法总结
2021/01/03 Python
利用python绘制正态分布曲线
2021/01/04 Python
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
实习单位推荐信范文
2013/11/27 职场文书
cf战队收人口号
2014/06/21 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
督导岗位职责
2015/02/04 职场文书
以权谋私检举信范文
2015/03/02 职场文书
2015年财务人员工作总结
2015/04/10 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
英雄儿女观后感
2015/06/09 职场文书
golang中的并发和并行
2021/05/08 Golang