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 相关文章推荐
登陆成功后自动计算秒数执行跳转
Jan 23 Javascript
JavaScript设计模式之单例模式实例
Sep 24 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
Jun 07 Javascript
javascript 正则表达式去空行方法
Jan 24 Javascript
详解Vue.js 2.0 如何使用axios
Apr 21 Javascript
详解js的视频和音频采集
Aug 09 Javascript
js操作table中tr的顺序实现上移下移一行的效果
Nov 22 Javascript
微信小程序左滑删除实现代码实例
Sep 16 Javascript
封装一下vue中的axios示例代码详解
Feb 16 Javascript
Vue 中使用 typescript的方法详解
Feb 17 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
Nov 05 Javascript
uniapp微信小程序:key失效的解决方法
Jan 20 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边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
PHP生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
9个PHP开发常用功能函数小结
2011/07/15 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
20个非常有用的PHP类库 加速php开发
2010/01/15 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
简单的代码实现jquery定时器
2013/11/17 Javascript
jQuery插件简单实现方法
2015/07/18 Javascript
jQuery基于cookie实现的购物车实例分析
2015/12/24 Javascript
js实现各浏览器全屏代码实例
2018/07/03 Javascript
详解小程序如何动态绑定点击的执行方法
2019/11/26 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
2018/05/15 Python
django将图片上传数据库后在前端显式的方法
2018/05/25 Python
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
python 反向输出字符串的方法
2018/07/16 Python
django-rest-swagger的优化使用方法
2019/08/29 Python
通过python3实现投票功能代码实例
2019/09/26 Python
Windows上安装tensorflow  详细教程(图文详解)
2020/02/04 Python
python如何利用paramiko执行服务器命令
2020/11/07 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
印度在线杂货店:bigbasket
2018/08/23 全球购物
CAD制图设计师自荐信
2014/01/29 职场文书
优秀辅导员事迹材料
2014/02/16 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
活着观后感
2015/06/03 职场文书
关于MySQL中的 like操作符详情
2021/11/17 MySQL