Vue 生命周期

栏目: JavaScript · 发布时间: 5年前

内容简介:简单来说就是,钩子(生命周期函数)就好像是把人的出生到死亡分成一个个阶段,你肯定是在出生阶段起名字,而不会在成年或者死亡的阶段去起名字。或者说你想在出生阶段去约炮,也是不行的。组件也是一样,Vue 在实例化一个组件时会在特定的阶段调用特定的方法,调用的这个方法就叫钩子方法,比如 Vue 在实例化组件之初按顺序调用在调用

生命周期函数

生命周期函数就是 Vue 实例在某一个时间点会自动执行的函数

简单来说就是,钩子(生命周期函数)就好像是把人的出生到死亡分成一个个阶段,你肯定是在出生阶段起名字,而不会在成年或者死亡的阶段去起名字。或者说你想在出生阶段去约炮,也是不行的。组件也是一样,Vue 在实例化一个组件时会在特定的阶段调用特定的方法,调用的这个方法就叫钩子方法,比如 Vue 在实例化组件之初按顺序调用 beforeCreatedcreatedbeforeMountedmounted ,每个阶段组件内部的属性都是不一样的,比如 created 钩子时视图还没有渲染,就不能做一些 dom 操作。所以一般特定的钩子做特定的事,比如 ajax 获取数据就可以在 mounted 阶段,当然放在 createdbeforeMounted 也是可以的,因为 ajax 是异步的嘛, ajax 之后的回调会放在事件队列的尾部,此时实例化组件整个过程会在 ajax 回调之前执行完毕。所以 ajax 操作放在 createdmounted 里面都是可以的。

Vue 生命周期

在调用 new vue 时,Vue 会帮我们去创建一个 Vue 的实例,创建过程其实并不是像我们想的这么简单,首先它会初始化一些事件和生命周期相关的内容,

在初始化完成的时候,Vue 会自动的执行一个 beforeCreate 函数

之后会初始化一些外部的注入和一些双向绑定相关的事情,当这一部分完成后,基本上 Vue 的初始化就都完成了。在这个节点上又有一个 created 函数 被自动执行

let vm = new Vue({
    el:'#app',
    beforeCreate(){
        console.log('beforeCreate')     
    },
    created(){
        console.log('created')
    }
})

这个时候 Vue 的初始化已经基本结束了,然后它会询问一个条件:你这个 Vue 实例里是否有 el 这个选项

如果有就会询问是否有 template 这个选项:

  • 如果没有就会走右侧的这个分支,

    • 如果这个实例没有 templeate ,就会将 el 这个根节点当做模版,来进行渲染
  • 有就会走左侧的分支

    • template 作为模版去渲染

上面这一步走完后,并没有立即渲染,在渲染之前会执行 beforeMount 函数

当这个函数执行之后,模版结合数据最终生成的 Dom 元素,会被挂载到页面之上

当被挂载到页面之上,也就是 hello world 显示到页面之上,这时候 mounted 函数会被执行(页面挂载之后会执行)

let vm = new Vue({
    el:'#app',
    beforeCreate(){
        console.log('beforeCreate')
    },
    created(){
        console.log('created')
    },
    beforeMount(){
        console.log($el)                //<div id="app"></div>
        console.log('beforeMount')
    },
    mounted(){
        console.log($el)                //<div id="app">Hello world</div>
        console.log('mounted')
    }
})

这里也验证了 beforeMount 执行时,页面还没有被渲染, mounted 执行时,页面已经被渲染了

在往下是 beforeDestory (实例被销毁前执行), destoryed (实例销毁完成后执行)

当数据被改变时,会执行 beforeUpdate (数据被改变,还没渲染之前触发), updated (数据被改变,渲染完成后触发)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

从零开始学架构

从零开始学架构

李运华 / 电子工业出版社 / 2018-9-21 / 99

本书的内容主要包含以下几部分:1) 架构设计基础,包括架构设计相关概念、历史、原则、基本方法,让架构设计不再神秘;2) 架构设计流程,通过一个虚拟的案例,描述了一个通用的架构设计流程,让架构设计不再依赖天才的创作,而是有章可循;3) 架构设计专题:包括高性能架构设计、高可用架构设计、可扩展架构设计,这些模式可以直接参考和应用;4) 架构设计实战,包括重构、开源方案引入、架构发展路径、互联网架构模板......一起来看看 《从零开始学架构》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

html转js在线工具
html转js在线工具

html转js在线工具