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 相关文章推荐
Array.prototype.slice.apply的使用方法
Mar 17 Javascript
JavaScript中的fontsize()方法使用详解
Jun 08 Javascript
JS判断页面是否出现滚动条的方法
Jul 17 Javascript
jQuery遮罩层效果实例分析
Jan 14 Javascript
学习使用AngularJS文件上传控件
Feb 16 Javascript
JS跨域解决方案之使用CORS实现跨域
Apr 14 Javascript
AngularJS入门教程之Scope(作用域)
Jul 27 Javascript
D3.js实现散点图和气泡图的方法详解
Sep 21 Javascript
jquery html5 视频播放控制代码
Nov 06 Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
Feb 21 Javascript
阿望教你用vue写扫雷小游戏
Jan 20 Javascript
Javascript原型链及instanceof原理详解
May 25 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读取der格式证书乱码解决方法
2015/06/22 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
jquery 锁定弹出层实现代码
2010/02/23 Javascript
Jquery 扩展方法
2010/05/06 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
jQuery滚动条插件nanoscroller使用指南
2015/04/21 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
jQuery插件Echarts实现的渐变色柱状图
2017/03/23 jQuery
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
python版大富翁源代码分享
2018/11/19 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
python xlwt如何设置单元格的自定义背景颜色
2019/09/03 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
python递归函数用法详解
2020/10/26 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
外企C语言笔试题
2013/11/10 面试题
中年人生感言
2014/02/04 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技