You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Vue.prototype._init=function(options){vm._self=vm;initLifecycle(vm);initEvents(vm);initRender(vm);callHook(vm,'beforeCreate');initInjections(vm);// resolve injections before data/propsinitState(vm);initProvide(vm);// resolve provide after data/propscallHook(vm,'created');}
因为initState的执行在beforeCreate和 created 之间,所以在beforeCreate生命周期里面是拿不到data数据的
【源码】生命周期 源码解析
前言
生命周期的源码比较简单,这里就不从入口开始一步一步讲了
源码解析
我们知道Vue的mixin机制会把生命周期的回调函数存在一个数组中
然后Vue源码是通过
callHook
函数来调用这些回调,达到生命周期执行的效果, 如因为
initState
的执行在beforeCreate
和created
之间,所以在beforeCreate
生命周期里面是拿不到data数据的我们来看一下
callHook
函数从代码上我们可以发现两个点
内部很简单,是通过遍历数组的形式让生命周期的回调函数执行
向外暴露事件
hook
, 这也是为什么我们可以通过@hook
来获取到某个组件的生命周期的原因我们对生命周期的原理有了大致了解之后,我们再来看下各个生命周期都在什么时候执行
总结
生命周期的源码超级简单,就是遍历mixin机制合并之后的生命周期回调函数数组,然后依次执行,但是我们也发现了另外一点就是我们可以通过
@hook
获取到组件的生命周期The text was updated successfully, but these errors were encountered: