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 相关文章推荐
js清空form表单中的内容示例
May 20 Javascript
JavaScript中函数(Function)的apply与call理解
Jul 08 Javascript
jQuery使用ajax跨域获取数据的简单实例
May 18 Javascript
javacript获取当前屏幕大小
Jun 04 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
Feb 09 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
Feb 18 jQuery
vue 简单自动补全的输入框的示例
Mar 12 Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
Apr 27 Javascript
JavaScript ES6常用基础知识总结
Feb 09 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
Sep 18 Javascript
简单使用webpack打包文件的实现
Oct 29 Javascript
vue 给数组添加新对象并赋值
Apr 20 Vue.js
基于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 5.0对象模型深度探索之属性和方法
2008/03/27 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
深入解读JavaScript中的Iterator和for-of循环
2015/07/28 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
js实现交通灯效果
2017/01/13 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
2017/02/10 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
重新认识vue之事件阻止冒泡的实现
2018/08/02 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
2018/10/29 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
Python魔术方法详解
2015/02/14 Python
python读写json文件的简单实现
2017/04/11 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
土木工程个人自荐信范文
2013/11/30 职场文书
养殖人员的创业计划书范文
2013/12/26 职场文书
高中毕业生自我鉴定例文
2013/12/29 职场文书
演讲比赛获奖感言
2014/02/02 职场文书
政府门卫岗位职责
2014/04/29 职场文书
文明寝室申报材料
2014/05/12 职场文书
网吧消防安全责任书
2014/07/29 职场文书
整改通知书
2015/04/20 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
常用的文件对应的MIME类型汇总
2022/04/26 HTML / CSS
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers