Vue.set() this.$set()引发的视图更新思考及注意事项


Posted in Javascript onAugust 30, 2018

引文

vue文档列表渲染中有条注意事项:

Vue.set() this.$set()引发的视图更新思考及注意事项

这里提到的两种情况实际改变了数据但是没有触发视图更新。

由此引出Vue.set(),先上文档API:

 

this.$set()Vue.set()本质方法一样,前者可以用在methods中使用。

set方法调用时,可以触发页面全部重新渲染。

比如在vue中有个data数组arr:

//arr=[1,2,3]
  arr[1]='b'
  console.log(arr) // [1,2,3]
  Vue.set(arr,2,'c')
  console.log(arr) // [1,b,c]

可以看出set触发了整个页面的重新渲染,连arr[1]='b'的效果也被重新渲染了。

使用set添加数据

Vue.set()不光能修改数据,还能添加数据,弥补了Vue数组变异方法的不足。

可以使用set添加数据这一特性,解决一些常见问题。

例如循环出的元素点击应用选中样式,再点击取消选中样式。

<section v-for="item in list">
  <div :class="['xxclass',item.checked?'checked':'']"></div>
</section>
<!--这里通过判断item的**本身不存在的checked属性**来决定是否增加checked样式类-->

点击方法如下:

clickHandle: function(item){
  if(typeof item.checked === 'undefined'){
   this.$set(item, 'checked', true)
  } else {
   item.checked = !item.checked
  }
}
// 如果item没有checked属性就用set方法添加,有则取反

这就利用set使用了对象中本身不存在的checked属性来实现想要的功能。

深入响应式原理

至于视图更新时机可以看文档深入响应式原理

总结

以上所述是小编给大家介绍的Vue.set() this.$set()引发的视图更新思考及注意事项,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript 写的简单进度条控件
Jan 22 Javascript
javascript 命名空间以提高代码重用性
Nov 13 Javascript
JQueryEasyUI Layout布局框架的使用
Apr 08 Javascript
动态加载脚本提升javascript性能
Feb 24 Javascript
js兼容火狐获取图片宽和高的方法
May 21 Javascript
jQuery实现给页面换肤的方法
May 30 Javascript
将JSON字符串转换成Map对象的方法
Nov 30 Javascript
数组Array的排序sort方法
Feb 17 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
Jun 28 Javascript
Angular中管道操作符(|)的使用方法
Dec 15 Javascript
详解Vue快速零配置的打包工具——parcel
Jan 16 Javascript
详解iview的checkbox多选框全选时校验问题
Jun 10 Javascript
基于Angularjs-router动态改变Title值的问题
Aug 30 #Javascript
从vue源码解析Vue.set()和this.$set()
Aug 30 #Javascript
vue-router动态设置页面title的实例讲解
Aug 30 #Javascript
解决vue select当前value没有更新到vue对象属性的问题
Aug 30 #Javascript
微信小程序使用wxParse解析html的实现示例
Aug 30 #Javascript
vue中rem的配置的方法示例
Aug 30 #Javascript
Vue2实时监听表单变化的示例讲解
Aug 30 #Javascript
You might like
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
PHP开发的一些注意点总结
2010/10/12 PHP
PHP下常用正则表达式整理
2010/10/26 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
mac下的nodejs环境安装的步骤
2017/05/24 NodeJs
node中的session的具体使用
2018/09/14 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
python 的列表遍历删除实现代码
2020/04/12 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
解决python xx.py文件点击完之后一闪而过的问题
2019/06/24 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
机械电子工程专业推荐信范文
2013/11/20 职场文书
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
信息专业大学生自我评价分享
2014/01/17 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
爱国主义演讲稿
2014/05/07 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
企业挂职心得体会
2014/09/10 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
长江七号观后感
2015/06/11 职场文书
Python实现批量自动整理文件
2022/03/16 Python