initLifecycle

184 阅读1分钟

initLifecycle函数的定义位于源码的src/core/instance/lifecycle.js

let parent = options.parent
  if (parent && !options.abstract) {
    while (parent.$options.abstract && parent.$parent) {
      parent = parent.$parent
    }
    parent.$children.push(vm)
}

第一步:获取父组件,判断是否有父组件且父组件是否是抽象组件 第二步:有父组件且父组件是抽象组件就用 while 循环向上寻找父组件且父组件不是抽象组件。

parent.$children.push(vm)

找父组件后把自己放到父组件的子组件数组里面

vm.$parent = parent

自己的父组件就是找的不抽象父组件

 vm.$root = parent ? parent.$root : vm

$root 是自己的根实例,假如有父组件父组件的根实例就是我自己的,假如没有我自己是我自己的根实例。

vm.$children = []
vm.$refs = {}

vm._watcher = null
vm._inactive = null
vm._directInactive = false
vm._isMounted = false
vm._isDestroyed = false
vm._isBeingDestroyed = false

初始化赋值。