vue源码解读3:initLifecycle(vm)

24 阅读1分钟

来到vue>src>core>instance>lifecycle.ts文件

import Watcher, { WatcherOptions } from '../observer/watcher'

export function initLifecycle(vm: Component) {

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

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

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

  vm._provided = parent ? parent._provided : Object.create(null)
  vm._watcher = null
  vm._inactive = null
  vm._directInactive = false
  vm._isMounted = false
  vm._isDestroyed = false
  vm._isBeingDestroyed = false
}