如何区分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通过相同的name进行表格求和代码
Aug 18 Javascript
jQuery中queue()方法用法实例
Dec 29 Javascript
每天一篇javascript学习小结(Array数组)
Nov 11 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
Apr 13 Javascript
Jquery元素追加和删除的实现方法
May 24 Javascript
使用bootstrap实现多窗口和拖动效果
Sep 22 Javascript
Javascript中作用域的详细介绍
Oct 06 Javascript
详解Vue-cli 创建的项目如何跨域请求
May 18 Javascript
React-Native中props具体使用详解
Sep 04 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
Jan 15 Javascript
微信小程序 简易计算器实现代码实例
Sep 02 Javascript
微信小程序定义和调用全局变量globalData的实现
Nov 01 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
discuz目录文件资料汇总
2014/12/30 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
php实现将Session写入数据库
2015/07/26 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
js cookies实现简单统计访问次数
2009/11/24 Javascript
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
关于jQuery判断元素是否存在的问题示例探讨
2014/07/21 Javascript
JS的数组迭代方法
2015/02/05 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
vant 解决tab切换插件标题样式自定义的问题
2020/11/13 Javascript
原生JavaScript实现留言板
2021/01/10 Javascript
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
django将图片上传数据库后在前端显式的方法
2018/05/25 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
Python chardet库识别编码原理解析
2020/02/18 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
利用CSS3实现的文字定时向上滚动
2016/08/29 HTML / CSS
员工评语大全
2014/01/19 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
活动总结报告范文
2014/05/04 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书
《搭石》教学反思
2016/02/18 职场文书
MySQL使用IF语句及用case语句对条件并结果进行判断 
2022/09/23 MySQL