美文网首页从0到1_前端开发
Web App开发--Vue生命周期与生命钩子

Web App开发--Vue生命周期与生命钩子

作者: ef43ffb32440 | 来源:发表于2017-05-06 17:37 被阅读519次

Vue实例


构造器

在实例化 Vue 时,需要传入一个选项对象,它可以包含数据、模板、挂载元素、方法、生命周期钩子等选项。全部的选项可以在 API 文档中查看。

每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例 启动的:

var vm = new Vue({
  // 选项
})
Vue实例生命周期

每个 Vue 实例在被创建之前都要经过一系列的初始化过程。例如,实例需要配置数据观测(data observer)、编译模版、挂载实例到 DOM ,然后在数据变化时更新 DOM 。在这个过程中,实例也会调用一些 生命周期钩子
其它的钩子,在实例生命周期的不同阶段调用,如mountedupdateddestroyed 。钩子的 this 指向调用它的 Vue 实例。一些用户可能会问 Vue.js 是否有“控制器”的概念?答案是,没有。组件的自定义逻辑可以分布在这些钩子中。

生命周期示意图


<br />

生命钩子的用法


从上面的图片中可直到,Vue实例的生命钩子有beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestroydestroy
另外,Vue的构造器还有其它的选项,如eldatacomputedwatchmethods等。
创建一个Vue实例如下,不过一般用不上全部的构造器选项:

new Vue({
    el: "#app",  
    data: {
        var1: xxx,
        var2: {
            innerVar1: xxx,
            innerVar2: xxx,
            innerVar3: xxx
        }
    },
    computed: {
        sumOfVar2: function() {
            return (this.var2.innerVar1 + this.var2.innerVar2 + this.var2.innerVar3);
        }
    },
    watch: {
         'var1': function() {
         },
        'var2.innerVar1': function() {          
        },
        'var2.innerVar2': function() {  
        },
        'var2.innerVar3': function() {  
        }   
    },
    methods: {
        func1: function() {
        },
        func2: function() {
        },
        func3: function() {
        }
    },
    beforeCreate: function () {
    },
    created: function () {
    },
    beforeMount: function () {
    },
    mounted: function() {
    },
    beforeUpdate: function () {
    },
    updated: function () {
    },
    beforeDestroy: function() {
    },
    destroyed: function() {
    }
});

我本人用的最多的是mountedupdated

mounted在Vue实例挂载到Dom上执行,这个阶段网页还在加载。而且从页面开始加载到加载完成,mounted只执行一次。因此,不要在mounted中执行一些耗时的操作,否则会导致页面的加载速度变慢。mounted适合做一些数据和界面的初始化操作。

由于mounted时实例已经挂载到Dom上,所以这是可以对元素节点进行一些操作。但如果某个元素节点用了v-if控制切换显示,而且初始时v-if的条件为假,则Dom上就没有该元素节点。这时即使在mounted中也获取不到该元素节点。

updated在每次数据更新时都会执行。数据更新后可以在这里进行一些后续的操作。

上一篇: Web App开发--vue.js入门与实践
下一篇: Web App开发--Vue组件化应用构建

相关文章

  • Web App开发--Vue生命周期与生命钩子

    Vue实例 构造器在实例化 Vue 时,需要传入一个选项对象,它可以包含数据、模板、挂载元素、方法、生命周期钩子等...

  • Web App开发--Vue生命周期与生命钩子

    Vue实例 构造器在实例化 Vue 时,需要传入一个选项对象,它可以包含数据、模板、挂载元素、方法、生命周期钩子等...

  • Vue生命周期

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

  • Vue (2.x)生命周期

    注: 本文摘抄自vue官网,侵删。 生命周期图示 vue官网的生命周期图示如下 生命周期钩子 所有生命周期钩子自动...

  • 2.vue生命周期钩子

    Vue的生命周期钩子

  • vue生命周期

    一 vue生命周期 Vue的生命周期:就是vue实例从创建到销毁的全过程 二 vue生命周期钩子 vue生命周期...

  • 详细的分析 Vue生命周期

    Vue 的生命周期 生命周期执行的函数叫法有三种: 生命周期钩子 生命周期函数 钩子函数 生命周期钩子概念: 在v...

  • vue3与vue2生命周期

    一、vue3 生命周期函数 二、vue2生命周期 在实际开发项目中这些钩子函数如何使用呢? 还有个比较特殊的钩子函...

  • 生命周期函数

    vue生命周期钩子=生命周期函数=生命周期事件与EL DATA METHODS 平级创建阶段的4个生命周期 如果...

  • vue 获取节点 获取事件

    vue 生命周期 什么是钩子函数 一开始就执行的 就是钩子函数 vue 钩子函数 也称作为生命周期 befor...

网友评论

  • 几岁老人:mounted中获取数据?不是在created的时候吗?
    几岁老人:@honli 及时显示到界面的数据?比如具体的?那我在created的时候获取初始加载数据没问题的吧?主要是created和mounted具体的应用场景和概念混淆
    ef43ffb32440:created阶段,dom节点还没挂在到document上,因此要获取或者改变节点的值是不行的。
    这里说的获取数据是需要及时显示到界面的数据。没有阐述清楚,多谢您的提问。

本文标题:Web App开发--Vue生命周期与生命钩子

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