vue生命周期和钩子函数的理解

vue生命周期

vue生命周期和钩子函数的理解_第1张图片


钩子就好像是把人的出生到死亡分成一个个阶段,你肯定是在出生阶段起名字,而不会在成年或者死亡的阶段去起名字。或者说你想在出生阶段去约炮,也是不行的。组件也是一样,每个阶段它的内部构造是不一样的。所以一般特定的钩子做特定的事,比如ajax获取数据就可以在mounted阶段。


生命周期探究

对于执行顺序和什么时候执行,看上面两个图基本有个了解了。下面我们将结合代码去看看钩子函数的执行。




    
    



{{ message }}

完成后打开谷歌浏览器

vue生命周期和钩子函数的理解_第2张图片

由上图可知:

1、beforecreated:el 和 data 并未初始化,都为undefined
2、created:完成了 data 数据的初始化,el没有
3、beforeMount:完成了 el 和 data 初始化  此时的$el为虚拟的dom节点,p标签里面的文本为{{message}}
4、mounted :
完成挂载,“虚拟”的dom节点被真实的dom节点替换,并将其插入到dom树中,于是在触发mounted时,可以获取到$el为真实的dom元素(),app.$el===document.getElementById("app")  // true


用图解释直观一点:

vue生命周期和钩子函数的理解_第3张图片


update相关

这里面在chrome  console里执行以下命令

app.message= 'yes !! I do';

下面就能看到data的值被修改以后将会出发update操作

vue生命周期和钩子函数的理解_第4张图片


destroy相关

有关于销毁,暂时还不是很清楚。我们在console里执行下命令对 vue实例进行销毁。销毁完成后,我们再重新改变message的值,vue不再对此动作进行响应了。但是原先生成的dom元素还存在,可以这么理解,执行了destroy操作,后续就不再受vue控制了。

app.$destroy();

vue生命周期和钩子函数的理解_第5张图片


参考文献:https://segmentfault.com/a/1190000008010666#articleHeader7


你可能感兴趣的:(VUE)