Vue生命周期

Vue生命周期

在使用vue进行日常开发中,我们总有这样的需求,想在页面刚一加载出这个表格组件时,就发送请求去后台拉取数据,亦或者想在组件加载前显示个loading图,当组件加载出来就让这个loading图消失等等这样或那样的需求。
要实现这些需求,最重要的一点就是我怎么知道这个组件什么时候加载,换句话说我该什么时候向后台发送请求,为了解决这种问题,组件的生命周期钩子函数就应运而生。

1. Vue生命周期图示

Vue生命周期
这是官方文档给出的一个组件从被创建出来到最后被销毁所要经历的一系列过程,所以这个过程也叫做一个组件的生命周期图。从图中我们可以看到,一个组件从被创建到最后被销毁,总共要经历以下8个过程:

1.beforeCreate:组件实例创建之前
2.created:组件实例创建完毕
3.beforeMount:组件DOM挂载之前
4.mounted:组件DOM挂载完毕
5.beforeUpdate:组件数据更新之前
6.updated:组件数据更新完毕
7.beforeDestroy:组件实例销毁之前
8.destroyed:组件实例销毁完毕
2. 代码演示
<div id="app">
    <h1>{{num}}</h1>
    <button @click="add">加</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            num:10
        },
        //组件实例创建之前
        beforeCreate() {
            console.log('beforeCreate 组件实例创建前');
        },
        //组件实例创建完毕
        created() {
            console.log('created 组件实例创建完毕');
        },
        //组件DOM挂载之前
        beforeMount() {
            console.log('beforeMount 组件DOM挂载前');
        },
        //组件DOM挂载完毕
        mounted() {
            console.log('mounted 组件DOM挂载完毕');
        },
        //组件数据更新之前
        beforeUpdate() {
            console.log('beforeUpdate 组件数据更新前');
        },
        //组件数据更新完毕
        updated() {
            console.log('updated 组件数据更新完毕');
        },
        //组件实例销毁之前
        beforeDestroy() {
            console.log('beforeDestroy 组件实例销毁前');
        },
        //组件实例销毁完毕
        destroyed() {
            console.log('destroyed 组件实例销毁完毕');
        },
        methods:{
            //改变数据,可以演示beforeUpdate与updated
            add(){
                this.num++;
            }
        }
    })
    //使用$destroy()销毁当前实例,可以演示beforeDestroy与destroyed
    //app.$destroy();
</script>
3. 总结

以上就是vue中组件生命周期钩子函数执行的各个过程以及执行的时机,但是这些钩子函数到底该怎么用呢?针对前言中提出的需求我们又该怎么解决呢?

例如有一个表格组件:
1. 我们想在表格加载之前显示个loading图,那么我们可以在组件实例创建之前的钩子函数beforeCreate里面将loading图显示。
2. 当组件实例加载出来,我们可以在created钩子函数里让这个loading图消失。
3. 当表格被加载好之后我们想让它马上去拉取后台数据,那么我们可以在组件DOM挂载之前的钩子函数beforeMount里面去发送请求。
4. 从后台拉取的数据要绑定在DOM中,那么就必须要在组件DOM挂载完毕的钩子函数mounted里面去做。
5.  表格中的数据在更新前和更新后,我们都需要做一个处理,那么这些工作就可以放在beforeUpdate和updated中去做。
6.  当应用程序结束后,或组件实例准备销毁时,有一些善后处理的工作(比如释放资源)就可以放在beforeDestroy和destroyed中去做。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周遭.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值