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接口获取

posted @ 2022-09-29 10:59    阅读(572)  评论(0编辑  收藏  举报