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 相关文章推荐
jQuery each()方法的使用方法
Mar 18 Javascript
jquer之ajaxQueue简单实现代码
Sep 15 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
Jun 02 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
Aug 11 Javascript
jQuery往返城市和日期查询实例讲解
Oct 09 Javascript
实例讲解javascript注册事件处理函数
Jan 09 Javascript
利用PM2部署node.js项目的方法教程
May 10 Javascript
分享vue里swiper的一些坑
Aug 30 Javascript
使用pkg打包Node.js应用的方法步骤
Oct 19 Javascript
vue实现的网易云音乐在线播放和下载功能案例
Feb 18 Javascript
ES6 Class中实现私有属性的一些方法总结
Jul 08 Javascript
微信小程序 云开发模糊查询实现解析
Sep 02 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之Smarty入门
2007/01/04 PHP
实用函数4
2007/11/08 PHP
PHP 第二节 数据类型之数值型
2012/04/28 PHP
PHP中设置时区方法小结
2012/06/03 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
深入浅出php socket编程
2015/05/13 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
详解nodejs 文本操作模块-fs模块(四)
2016/12/22 NodeJs
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
信息滚动效果的实例讲解
2017/09/18 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
Python学习资料
2007/02/08 Python
使用Python对MySQL数据操作
2017/04/06 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
Django+Ajax+jQuery实现网页动态更新的实例
2018/05/28 Python
浅谈Pandas 排序之后索引的问题
2018/06/07 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
波兰补充商店:Muscle Power
2018/10/29 全球购物
经济管理专业毕业生推荐信
2013/11/11 职场文书
工程质量月活动方案
2014/02/19 职场文书
中学生逃课检讨书
2015/02/17 职场文书
公司催款律师函
2015/05/27 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python