当前位置: 首页 > 网络应用技术

为什么在定义方法收集依赖性中有两个深度?

时间:2023-03-06 18:13:04 网络应用技术

  要了解Vue对儿童鞋的反应原则,必须通过定义性方法给人留下深刻的印象。这是VUE响应的核心方法。在此方法中,一个DEP对应于OBJ的每个键,该键存储在定义性闭合中。该DEP的作用非常明显。收集当前的观察器以在触发OBJ属性集方法时通知观察者更新。

  但是,从上面的明确方法中,可以看出,除了对应于与每个键相对应的dep集合的依赖项(以下称为clipure中的dep),还有一个childob.depp.depper.depper.depper.depper.depper.deppertector()集合依赖性。

  令人困惑的是,在ReactiveSetter方法中,只有闭合中的DEP通知观察者,Childob.dep不会通知观察者,并且此DEP无需通知观察者。这是为vue.set()方法。如果您不知道vue.set方法的孩子的鞋子,建议首先了解vue.set的原理。

  让我们看一下什么是Childob

  从以下代码中,可以知道ChildOb是观察者的一个实例,将DEP属性添加到构造函数中的ChildOB

  让我们以一个实用的例子来看

  在VUE的初始化时,观察将把数据拨回obj以进行响应(后来称为dataObj)。然后在新观察者中,wall方法将通过循环??传递,以获取DataOBJ的每个密钥并执行DepitireActive

  当a属性定义反应性时,我们在这里称为与A aval属性相对应的val。这次,ChildOb是observer.Childob.Childob.value指向Aval的AVAL,并使用附加的Dep属性来收集依赖关系。

  以下是代码的核心线。通过DEF,将OB属性添加到值(此值),指向ChildOB本人。此步骤后,我们可以通过Aval.ob.dep访问与Aval对应的DEP。

  众所周知,VUE无法检测到对象属性的添加。要解决此问题,Vue添加了VUE.Set Method.LET查看设置方法

  每个人都必须在这里实现。vue.set是vosh之后,您需要通知观察者以更新。尽管该对象的新属性是通过定义响应响应的,但在DEP的关闭中,它完全无法获得。此对象上的OB对象以删除相应的观察器更新。

  从上面的源代码分析中,我们还可以知道一个注意点??,VUE不允许动态添加root -level响应属性

  这样是?梦,设定方法将在非生产环境中发出警告

  原因是当观察(this.data)初始化时,我们无法通过返回ob收集依赖项。