vue数据修改,UI视图没有更新
当一个组件数据发生了变化,但是视图层没有发生变化,形成的原因有:
1、 数据流的问题,如果一个子组件的props数据是直接通过子组件data中去接收props
,当修改父组件props时,如果子组件不监听props
,重新对data
赋值那么可能会导致子组件数据并不会更新
2、我们每一个data
中返回的对象的值都会被Observer
,每一个数组对象在初始化时都会被Observer
,数组中的每一个对象都会添加一个dep
对象,当数组对象发生变化时,就会触发对象拦截,更新操作。如果数组中的每一项是基础数据类型,那么通过索引方式修改其值并不会触发更新UI
3、当一个数组的每一个item
并不是对象时,其实此时item
并不是一个响应式,并不会被Observe
,在data初始化的每一个对象vue初始化时,都会给每一个对象变成reactive
,并且每一个对象会有一个dep
对象。只有被Observer
,修改其值才会触发set
,从而更新视图层。
4、如果使用hooks
,如果并不会是从父组件传入的props,而是重新在子组件重新引入hooks,在父组件你修改同一份hooks引用,子组件并不会有效果,因为hooks每次调用都会时一份新的引用,所以子组件只能从props
接口获取