vue视图不更新为什么要用...

346 阅读1分钟

1、拓展运算符在this.a = [...this.a]中的作用

大家都在vue项目中遇到一个问题,为什么有时候我操作数据的时候,我明明已经改变了数据,就是不生效呢,然后就去百度,百度告诉你,可以用push、...的方法进行操作,那...在这里面起到什么作用了呢?

2、为什么要用...?

首先解释一波: ...学名拓展运算符又叫三点运算符,是将一个数组转化为以逗号分隔的一个参数序列 在这句话里面,第一步:...将this.a浅拷贝出来然后分隔成一个一个参数, 第二步:将分隔出来的参数又放在一个[]里面,形成一个新的数组 第三步:进行赋值操作 使用...是因为vue视图有时候不会更新,vue本身也意识到了这问题,也提出了解决方案。那为什么vue视图不更 呢?

3、为什么vue视图不更新?

很多人说vue视图不更新是因为Object.defineProperty的问题,也有人说是vue本身的问题,但实际上都不是,vue官方给出的解释就是js限制。那js是怎么限制的呢? 因为vue本身以数据双向绑定著称,它的底层就是Object.defineProperty,它里面有一个限制就是在操作数据或者对象的时候并不会去出发setter操作,Object.defineProperty无法检测到对象属性的新增或删除。所有有时候不会更新数据。

4、最后

除了...你还能用什么?
push()
pop()
shift()
unshift()
splice()
sort()
reverse()