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 相关文章推荐
使用TextRange获取输入框中光标的位置的代码
Mar 08 Javascript
完美解决IE低版本不支持call与apply的问题
Dec 05 Javascript
javascript使用smipleChart实现简单图表
Jan 02 Javascript
DOM 事件流详解
Jan 20 Javascript
完美实现仿QQ空间评论回复特效
May 06 Javascript
jQuery自定义插件详解及实例代码
Dec 29 Javascript
使用ionic播放轮询广告的实现方法(必看)
Apr 24 Javascript
inner join 内联与left join 左联的实例代码
Sep 18 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
Jan 31 Javascript
初学node.js中实现删除用户路由
May 27 Javascript
iview form清除校验状态的实现
Sep 19 Javascript
JavaScript 作用域scope简单汇总
Oct 23 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
域名查询代码公布
2006/10/09 PHP
PHP define函数的使用说明
2008/08/27 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
vue.js实现双击放大预览功能
2020/06/23 Javascript
用python实现批量重命名文件的代码
2012/05/25 Python
在Python的Django框架中创建语言文件
2015/07/27 Python
Python文件处理
2016/02/29 Python
python访问抓取网页常用命令总结
2017/04/11 Python
python万年历实现代码 含运行结果
2017/05/20 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
python实现AdaBoost算法的示例
2020/10/03 Python
编写python代码实现简单抽奖器
2020/10/20 Python
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
女娲补天教学反思
2014/02/05 职场文书
大学毕业生求职自荐信
2014/02/20 职场文书
幼儿园庆六一活动方案
2014/03/06 职场文书
工作经历证明书范文
2014/11/02 职场文书
幼师个人总结范文
2015/02/28 职场文书
读《推着妈妈去旅行》有感1500字
2019/10/15 职场文书
详解Nginx 工作原理
2021/03/31 Servers
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js
Windows server 2003卸载和安装IIS的图文教程
2022/07/15 Servers