beforeCreate -> setup()
created -> setup()
beforeMount -> onBeforeMount
mounted -> onMounted
beforeUpdate -> onBeforeUpdate
updated -> onUpdated
beforeDestroy -> onBeforeUnmount
destroyed -> onUnmounted
activated -> onActivated
deactivated -> onDeactivated
errorCaptured -> onErrorCaptured
有两个地方可以调用 onBeforeUpdate
第一个是在组件渲染函数中 setupRenderEffect, 里面创建了 componentUpdateFn 函数,交给副作用函数监控。
中间第一行代码就是去判断
1 | if (!instance.isMounted) { // 如果组件实例未挂载 |
更新组件中的就是会调用 beforeUpdate.
1 | let { next, bu, u, parent, vnode } = instance |
和 beforeMount 一样,立即触发。
逻辑类似,都是在 mountComponent 的时候监视组件,然后触发更新.
1 | new Watcher( |
updateComponent 就是更新函数,其中有一个 watcherOptions
1 | const watcherOptions: WatcherOptions = { |
当遇到更新触发,然后触发钩子。
都是在 mountComponent 创建组件的时候处理更新逻辑。
Vue2.x 通过 watch options before 触发
Vue3.x 通过 effect 触发 updateComponent 触发。