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 动态加载 css 方法总结
Jul 11 Javascript
Jquery+JSon 无刷新分页实现代码
Apr 01 Javascript
另一个javascript小测验(代码集合)
Jul 27 Javascript
js使用正则实现ReplaceAll全部替换的方法
Jul 18 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
Sep 28 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
Dec 13 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
Mar 23 Javascript
JavaScript Ajax编程 应用篇
Jul 02 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
Aug 16 Javascript
JS基于开关思想实现的数组去重功能【案例】
Feb 18 Javascript
微信小程序激励式视频广告组件使用详解
Dec 06 Javascript
jquery选择器和属性对象的操作实例分析
Jan 10 jQuery
基于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的栏目导航程序
2006/10/09 PHP
PHP strtok()函数的优点分析
2010/03/02 PHP
PHP常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
javascript 的Document属性和方法集合
2010/01/25 Javascript
jQuery实现图片预加载效果
2015/11/27 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
javascript实现根据函数名称字符串动态执行函数的方法示例
2016/12/28 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
npx create-react-app xxx创建项目报错的解决办法
2020/02/17 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
Python入门之后再看点什么好?
2018/03/05 Python
Python File readlines() 使用方法
2018/03/19 Python
Python判断是否json是否包含一个key的方法
2018/12/31 Python
python提取xml里面的链接源码详解
2019/10/15 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
css图标制作教程制作云图标
2014/01/19 HTML / CSS
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
如何利用find命令查找文件
2016/11/18 面试题
高一地理教学反思
2014/01/18 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
心理咨询承诺书
2014/05/20 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
网络工程专业大学生求职信
2014/10/01 职场文书
出租车拒载检讨书
2015/01/28 职场文书
环保证明
2015/06/23 职场文书