如何区分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 实现日期灵活格式化的小例子
Jul 14 Javascript
javascript自定义in_array()函数实现方法
Aug 03 Javascript
javascript使用Promise对象实现异步编程
Mar 01 Javascript
AngularJS指令详解及示例代码
Aug 16 Javascript
jquery DataTable实现前后台动态分页
Jun 17 jQuery
详解如何在你的Vue项目配置vux
Jun 04 Javascript
JavaScript使用math.js进行精确计算操作示例
Jun 19 Javascript
VUE 实现复制内容到剪贴板的两种方法
Apr 24 Javascript
微信小程序时间戳转日期的详解
Apr 30 Javascript
JS window对象简单操作完整示例
Jan 14 Javascript
微信小程序复选框实现多选一功能过程解析
Feb 14 Javascript
js实现从右往左匀速显示图片(无缝轮播)
Jun 29 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
PHP4实际应用经验篇(9)
2006/10/09 PHP
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
2013/04/15 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
2015/12/17 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
JavaScript DOM 对象深入了解
2016/07/20 Javascript
JavaScript之解构赋值的理解
2019/01/30 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
vue实现将一个数组内的相同数据进行合并
2019/11/07 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
Python读写Excel文件方法介绍
2014/11/22 Python
解析Python中的二进制位运算符
2015/05/13 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
深入浅出学习python装饰器
2017/09/29 Python
几种实用的pythonic语法实例代码
2018/02/24 Python
想学python 这5本书籍你必看!
2018/12/11 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
成绩单公证书
2014/04/10 职场文书
领导班子对照检查材料
2014/09/22 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
Win10本地连接不见了怎么恢复? win10系统电脑本地连接不见了解决方法
2023/01/09 数码科技