美文网首页
Vue生命周期(描述1)

Vue生命周期(描述1)

作者: 唐人不自醉 | 来源:发表于2019-03-14 17:40 被阅读0次

1.定义及作用

  • 定义:每个 Vue 实例在被创建之前都要经过一系列的初始化过程。例如需要设置数据监听、编译模板、挂载实例到 DOM、在数据变化时更新 DOM 等,不同的时期对应不同的周期;
  • 生命周期钩子:不同周期开放出来的接口;
  • 作用:可以在特定的时期添加需求,比如请求后台数据等;

2.生命周期钩子函数使用

app = new Vue({
   el: '#app',
   data: {
       message : "vue demo"},          
   methods:{
       methodsTest(){
           return "methods test success"}},
   computed:{
       computedTest(){
           return "computed test success"}},
   beforeCreate:{……},
   created:{……},
   beforeMount:{……},
   beforeUpdate:{……},
   updated:{……},
   beforeDestroy:{……},
   destroyed:{……},}
   
setTimeout(function () {
  app.message= 'vue data changed';},0)

setTimeout(function () {
   app.$destroy();
   app.message= 'vue data destroy';
 },10)
  • 监测$el,data,computed,methods


  1. beforeCreate周期内,组件实例还未被创建 ,各属性均未生成;
  2. created周期内,Init injections and reactivity,这个阶段属性都已注入绑定,而且被watch变成reactivity,但是el还是没有生成,也就是DOM没有生成;
//看看源码,创建Vue实例时候会通过this._init()初始化 
function Vue (options) {
 if (process.env.NODE_ENV !== 'production' &&
!(this instanceof Vue)
) {
warn('Vue is a constructor and should be called with the `new` 
 keyword')
}
this._init(options) //初始化各个功能
}

//在_init()中有这样的一个执行顺序:其中initState()是在
//beforeCreate和created之间
initLifecycle(vm)
initEvents(vm)
initRender(vm)
callHook(vm, 'beforeCreate')
initInjections(vm) // resolve injections before data/props
initState(vm) //初始化
initProvide(vm) // resolve provide after data/props
callHook(vm, 'created') 

//在initState()做了这些事情:
//所以Props,methods,data和computed的初始化都是在beforeCreated和created之间完成的。
if (opts.props) initProps(vm, opts.props)//初始化Props
if (opts.methods) initMethods(vm, opts.methods)//初始化methods
if (opts.data) {
initData(vm)} else {
observe(vm._data = {}, true /* asRootData */)}//初始化data
if (opts.computed) initComputed(vm, opts.computed)//初始化computed
  1. beforeMount周期内,会判断options(new Vue()里面的大对象)里面是是否有el,有的话再看options里面是否有template;若是没有,在等待vm.mount(el)方法调用,为组件提供DOM容器,如果都提供了teamplate,则编译template模板,若是没有模板,则编译el里面的的元素。要注意的是此时只是编译了模板,还没有把属性挂载上去。
    315746004-59bf3ce1d721e_articlex.png
  1. mounted周期内,属性均已挂载;
  2. beforeUpdated,属性更新之前,注意此时属性已经发生变化 ;
  3. updated,属性更新后;
  4. beforeDestroy和destroyed,组件销毁前;实例销毁之前调用。在这一步,实例仍然完全可用。销毁后;Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁,此时再改变属性已经不再起作用。

相关文章

  • Vue生命周期(描述1)

    1.定义及作用 定义:每个 Vue 实例在被创建之前都要经过一系列的初始化过程。例如需要设置数据监听、编译模板、挂...

  • vue面试题总结

    1、vue生命周期 生命周期描述beforeCreate组件实例被创建之初,组件的属性生效之前created组件实...

  • Vue生命周期

    Vue生命周期详解 一、Vue生命周期 与 作用 (生命周期钩子就是生命周期函数) (1)Vue生命周期:每个Vu...

  • 生命周期

    对于 Vue 的生命周期,官网给了一张图: 这张图完整描述了 Vue 的生命周期,以及生命周期中涉及到的钩子函数。...

  • 《三》、Vue核心——生命周期

    Vue 实例生命周期 1、生命周期流程图 2、vue 生命周期分析 (1)、初始化显示;     ① before...

  • VUE知识点

    1.Vue的生命周期 (1)什么是vue生命周期? Vue 实例从创建到销毁的过程,就是生命周期。也就是从开始创建...

  • 前端经典问题

    VUE 1、v-show和v-if的区别2、为何v-for中要用key3、描述Vue组件生命周期(有父子组件的情况...

  • Vue.js入门(二):生命周期

    1 生命周期 Vue生命周期是Vue实例从创建到销毁的过程,就是生命周期。在Vue实例的生命周期过程中会运行生命周...

  • VUE框架模型

    1、vue生命周期

  • vue生命周期

    vue1--》 一 vue的生命周期如下图所示 二 vue生命周期的例子 注意触发vue的created事件以后,...

网友评论

      本文标题:Vue生命周期(描述1)

      本文链接:https://www.haomeiwen.com/subject/abpcmqtx.html