手机版

详细讲解Vue源码学习的callHook钩子函数

时间:2021-08-30 来源:互联网 编辑:宝哥软件园 浏览:

Vue实例在不同的生命周期阶段调用callHook方法。例如,在初始化实例时调用钩子(vm,' beforeCreate ')和调用钩子(vm,' created ')(_ init)。

这里的“beforeCreate”、“created”和“created”状态不是任意定义的,而是来自Vue内部定义的生命周期钩子。

var life cycle _ HOOKS=[' before create ',' created ',' beforeMount ',' Mount ',' beforeUpdate ',' updated ',' beforeDestroy ','销毁','激活','停用',' error captured '];更容易理解Vue官网的生命周期图。

接下来,我们来看看在Vue中实现hook函数的源代码:

函数callHook (vm,hook) { //#7573调用lifecycle hooks pushTarget()时禁用dep集合;var处理程序=vm。$ options[hook];if (handlers) { for (var i=0,j=handlers.lengthI j;i ) {尝试{ handlers[i]。呼叫(VM);} catch (e) { handleError(e,vm,(hook ' hook '));} } } if (vm。_hasHookEvent) { vm。$ emit(' hook : ' hook);} popTarget();}举个例子:

let test=new vue({ data : { a : 1 },create d : function(){ console . log('在此创建');} });实例化一个Vue组件测试,并为测试定义数据和创建的方法。在实例化组件时,Vue在内部调用callHook(vm,‘created’)(如上所述)。执行callHook函数时,Vue会在测试组件的$options中查找created是否存在,如果存在,则执行与created对应的方法。控制台日志(“在此创建”)将在此执行。

callHook的功能是执行用户定义的Hook函数,并将钩子中的这个点指向当前组件实例。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:详细讲解Vue源码学习的callHook钩子函数是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。