得鹿梦鱼 得鹿梦鱼

init

在初始化的时候会调用_init的方法,在init方法会初始化一下内容的内容

initLifecycle

  1. 设置$parent为第一个非抽象类的父节点
  2. 设置$root
  3. 初始化$children = []
  4. 初始化$refs = []
  5. 初始化私有属性 _provided为当前组件的父节点的_provided
  6. 初始化 _watcher
  7. 初始化 _inactive 动态组件
  8. 初始化 _directInactive为false
  9. 初始化 _isMounted为false
  10. 初始化 _isDestroyed为false
  11. 初始化 _isBeingDestroyed为false

initEvents

  1. 初始化_events为null
  2. 初始化_hasHookEvent为false

initRender

  1. 初始化虚拟节点_vnode
  2. 初始化静态节点属性_staticTress
  3. 开始收集$slots
  4. 开始初始化$scopedSlots
  5. 新增实例函数 $createElement和_c为同一个函数
  6. 定义$attr$listener响应式数据

执行钩子函数beforeCreate

initInjections

  1. 将注入inject定义为响应式数据
  2. 开启对象的递归响应式

initState

  1. 初始化组件的属性props
  2. 初始化组合式api的setup
  3. 初始化选项式api的method
  4. 初始化选项式api的data
  5. 初始化选项式api的computed
  6. 初始化watch

initProvide

执行钩子函数created

$options.el存在执行$mount

  1. 判断渲染函数是否存在,如果不存在, 初始化render为空的虚拟节点
  2. 执行beforeMount的钩子函数
  3. 更新组件
  4. 新增钩子函数beforeupdate
  5. 执行钩子函数mounted