如何区分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 相关文章推荐
jquery实现勾选复选框触发事件给input赋值
Feb 01 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
Jan 21 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
Mar 01 Javascript
js+html5实现canvas绘制椭圆形图案的方法
May 21 Javascript
js 动态给元素添加、移除事件的实现方法
Jul 19 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
Aug 02 Javascript
AngularJs Understanding the Controller Component
Sep 02 Javascript
jQuery用noConflict代替$的实现方法
Apr 12 jQuery
微信小程序使用for循环动态渲染页面操作示例
Dec 25 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
Nov 01 Javascript
浅谈vue中$bus的使用和涉及到的问题
Jul 28 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
Sep 16 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
php auth_http类库进行身份效验
2009/03/19 PHP
PHP操作XML作为数据库的类
2010/12/19 PHP
php获取字段名示例分享
2014/03/03 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
解读PHP中的垃圾回收机制
2015/08/10 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
JS的数组的扩展实例代码
2008/07/09 Javascript
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
鼠标事件延时切换插件
2011/03/12 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
WebSocket的简单介绍及应用
2019/05/23 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
2020/10/26 Javascript
vc6编写python扩展的方法分享
2014/01/17 Python
Python for Informatics 第11章之正则表达式(二)
2016/04/21 Python
tensorflow学习笔记之mnist的卷积神经网络实例
2018/04/15 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
护士实习生自我鉴定范文
2013/12/10 职场文书
优秀经理获奖感言
2014/03/04 职场文书
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
年终考核实施方案
2014/05/26 职场文书
农村党员一句话承诺
2014/05/30 职场文书
戒毒悔改检讨书
2014/09/21 职场文书
骨干教师个人总结
2015/02/11 职场文书
高温慰问简报
2015/07/21 职场文书
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
python 爬取吉首大学网站成绩单
2021/06/02 Python
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL
Nginx 502 bad gateway错误解决的九种方案及原因
2022/08/14 Servers