参考原文:

vue更新数组时触发视图更新的方法 - 大橙橙 - 博客园

vue数组对象修改触发视图更新 - 看风景就 - 博客园

直接修改数组元素是无法触发视图更新的,如

this.array[0] = {name: 'meng',age: 22
}

修改array的length也无法触发视图更新,如

this.array.length = 2;

触发视图更新的方法有如下几种

1. Vue.set

可以设置对象或数组的值,通过key或数组索引,可以触发视图更新

数组修改

Vue.set(array, indexOfItem, newValue)
this.array.$set(indexOfItem, newValue)

对象修改

Vue.set(obj, keyOfItem, newValue)
this.obj.$set(keyOfItem, newValue)

2. Vue.delete

删除对象或数组中元素,通过key或数组索引,可以触发视图更新

数组修改

Vue.delete(array, indexOfItem)
this.array.$delete(indexOfItem)

对象修改

Vue.delete(obj, keyOfItem)
this.obj.$delete(keyOfItem)

3. 数组对象直接修改属性,可以触发视图更新

this.array[0].show = true;
this.array.forEach(function(item){item.show = true;
});

4. splice方法修改数组,可以触发视图更新

this.array.splice(indexOfItem, 1, newElement)

5. 数组赋值为新数组,可以触发视图更新

this.array = this.array.filter(...)
this.array = this.array.concat(...)

6. 用Object.assign或lodash.assign可以为对象添加响应式属性,可以触发视图更新

//Object.assign的单层的覆盖前面的属性,不会递归的合并属性
this.obj = Object.assign({},this.obj,{a:1, b:2})//assign与Object.assign一样
this.obj = _.assign({},this.obj,{a:1, b:2})//merge会递归的合并属性
this.obj = _.merge({},this.obj,{a:1, b:2})

7.Vue提供了如下的数组的变异方法,可以触发视图更新

push()
pop()
shift()
unshift()
splice()
sort()
reverse()

vue更新数组时触发视图更新的方法相关推荐

  1. vue 加载页面时触发时间_5.6 vue更新数组时触发视图更新的方法,熟记JavaScript原生方法...

    问题:vue更新数组时触发视图更新的方法 变异方法: Vue 包含一组观察数组的变异方法,所以它们也将会触发视图更新.什么是变异方法呢?简单理解就是改变了原来的数组,可能包括数组长度length,或者 ...

  2. VUE 动态给对象增加属性,并触发视图更新。

    在开发过程中,我们时常会遇到这样一种情况:当vue的data里边声明或者已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的. 根据官方文档定义 ...

  3. vue this.$set 给data对象新增属性,并触发视图更新

    往响应式对象this.$data中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新.它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 . data () {retu ...

  4. Vue:触发视图更新的hack

    前言 触发视图更新的hack,hack的是什么?hack那些数据改变却没有被vue检测到的更新!那么vue有哪些情况是检测不到数据的变动的? 官方说明的有下面两大类: 数组 使用下标更新数组元素: 使 ...

  5. vue 不能响应set结构增加数据_Vue.set()动态的新增与修改数据,触发视图更新的方法...

    参数: target:要更改的数据源(可以是对象或者数组) key:要更改的具体数据(可以是字符串和数字) value :重新赋的值 用法:向响应式对象中添加一个属性,并确保这个新属性同样是响应式的, ...

  6. Vue Array数组操作(变异更新、替换)

    今天小编写一下Array数组操作(变异更新.替换) 来个v-for和key小补充,方便了解接下来的课程 循环指令v-for补充: 使用v-for更新已渲染的元素列表时,默认用就地复用策略;列表数据修改 ...

  7. vue中数组的七个响应式方法

    vue中数组的七个响应式方法 起因: ​ 在使用vue实习中,通过数组的索引改变了数组中的值,测试时发现,更改成功了,但是试图无响应. 原因: *通过索引值修改数组元素,不是响应式方法* // 以下代 ...

  8. Vs定义超大数组时,stack OverFlow的解决方法

    定义超大数组时,stack OverFlow的解决方法,当然了这里的数组不仅仅是int,char,double等内置类型,还可以是其他的类,如CString,CButton,CMap等. stack ...

  9. field list什么意思_从源码中学Vue(六)「解密」为什么操作数组的方法也会触发视图更新...

    欢迎来到我的<从源码中学Vue>专题系列文章,更多精彩内容持续更新中,欢迎关注 :) 上一章节我大概分析了下在Vue中的 Watcher.Observer.Dep三者的关系,以及如何检测数 ...

最新文章

  1. 英特尔将进行重大业务重组
  2. B01_NumPy Ndarray对象(ndarray内容结构,参数,多维,最小维度,dtype参数)
  3. 搜索2.0:利用用户点击记录改善搜索结果
  4. ubuntu16.04登录mysql出现1045的报错或者2002报错
  5. 静态数组和动态数组 内存分布
  6. Flash 杂志《summer tree》 第六期发布
  7. (企业案例)使用Nacos持久化规则,改造sentinel-dashboard
  8. microsoft mysql下载_MySQL下载与安装+Jmeter
  9. JavaScript数组api简单说明
  10. 信息化分析:集团企业信息化规划和实施研究
  11. TCL语言学习笔记一
  12. 一步一步教你做微博用户画像分析:Python微博爬虫+词云生成
  13. js 中的 let 关键字
  14. 《深入理解Android:Wi-Fi,NFC和GPS》章节连载[节选]--第九章 深入理解GPS
  15. 想换4K显示器了?那你搞懂啥是4K了吗?
  16. win10 64位搭建汇编环境debug
  17. 鸟哥的linux私房菜学习笔记《二十》bash简介
  18. 零基础python入门书籍推荐书目_清华大学出版社-图书详情-《Python数据科学零基础一本通》...
  19. Spring Boot 实现苹果支付同步验证
  20. ipad air4参数配置

热门文章

  1. 【selenium】对浏览器的操作 浏览器的最大化,设置浏览器的宽和高,浏览器的前进和后退,浏览器滚动条的控制
  2. Ubuntu ifconfig命令eth0没有IP 解决方法
  3. LDA文档主题生成模型
  4. macbookpro 触摸板突然失灵单击无效
  5. 从增强器Advisor窥探AOP原理
  6. 【Shell脚本】正确认识通过sh、./和source三种方式运行shell脚本的区别并据此定义和使用shell库函数
  7. 第19章 随机波动率模型入门
  8. Reids的BigKey和HotKey
  9. 三名科学家分享2022年诺贝尔化学奖
  10. vue常用开发ui框架(app,后台管理系统,移动端)及插件