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 onkeypress事件入门实例(按下或按住一个键盘按键)
Oct 17 Javascript
原生js实现模拟滚动条
Jun 15 Javascript
input点击后placeholder中的提示消息消失
Jan 15 Javascript
javascript获取wx.config内部字段解决微信分享
Mar 09 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
Dec 30 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
Aug 11 Javascript
jquery鼠标悬停导航下划线滑出效果
Sep 29 jQuery
JS实现的3des+base64加密解密算法完整示例
May 18 Javascript
送你43道JS面试题(收藏)
Jun 17 Javascript
vue+animation实现翻页动画
Jun 29 Javascript
基于JavaScript实现简单的轮播图
Mar 03 Javascript
JS实现简单控制视频播放倍速的实例代码
Apr 18 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简单实现多维数组排序的方法
2016/09/30 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
Jquery通过JSON字符串创建JSON对象
2014/08/24 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
vue+element-ui动态生成多级表头的方法
2018/08/28 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
2019/03/28 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
美国电视购物HSN官网:HSN
2016/09/07 全球购物
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
七年级数学教学反思
2014/01/22 职场文书
外贸采购员岗位职责
2014/03/08 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
项目经理任命书
2014/06/04 职场文书
图书馆志愿者活动总结
2014/06/27 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
文艺部部长竞选稿
2015/11/21 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python
Python中seaborn库之countplot的数据可视化使用
2021/06/11 Python