Vue之生命周期函数详解

众所周知。

Vue生命周期分成八个阶段   此博客搭配Vue官方周期图示食用效果更佳。

1.BeforeCreate()

 

 

Vue实例已经创建,但是data,和methods中的数据和方法都未被初始化。就是说你可以在beforeCreated(){}中获取到this,this指的是当前的Vue实例或者组件,但是this.data,this.method都是获取不到的。

2.Created()

Vue中data和method都已经初始化好。一般在此钩子函数中进行数据的初始化。

 

 

在此阶段后和BeforeMounte之前执行了render函数。Vue将代码渲染成内存中的DOM,也就是虚拟DOM。尚未挂载到页面中。

在此之后在beforeMount之前,Vue构造函数会检查配置项中有无el属性。如果有则替换html文档中的节点。再判断是否指定了template选项,如果有则将template替换节点,如果没有则依然是用el替换节点。

 

 

3.BeforeMount()函数中,页面中是没有被虚拟dom替换之前的dom

打个栗子

let vm = new Vue({
        el: '#app',
        data: {
            message: 'wxs',
            arr:[1,2,3],
            obj:{
                name:'wxs',
                age:21
            }
        },
        beforeMount(){
            console.log(document.querySelector("#app"))
        },
        mounted(){
            console.log(document.querySelector("#app"))
        },
        methods:{
        },
        watch:{
        },
        template: `<div id="app"><div>{{message}}</div><div>{{arr[0]}}</div><div>{{obj.name}}</div><button>改变!</button></div>`,
    })

再看打印结果

4.Mounted() 页面显示的是已经被替换之后的元素。

 

以上是Vue组件创建期间的钩子函数

以下是组件运行期间的钩子函数。

5.beforeUpdate() 触发此钩子函数的方法就是data中的值发生改变。在此钩子函数中还能拿到更新之前的值。

在此钩子函数中,界面还没有被更新,但是data值已经更新。(总结:旧页面,新数据)

 

在beforeupdate之后和update之前Vue在内存中偷偷执行了Virtual Dom的重新渲染和挂载。

6.update()在此钩子中能拿到新界面的值,和新的数据值。(总结:新界面,新数据)

测试代码及截图

let comp = {
        template: "<div><div>{{msg}}</div>  <button ref='btn' @click='change'>改变了</button></div>",
        data() {
            return {
                msg: '初始文字'
            }
        },
        methods: {
            change: function () {
                this.msg = '改变了'
            }
        },
        beforeUpdate() {
            console.log(document.getElementById('app').innerHTML)
            
        },
        updated(){
            console.log(document.getElementById('app').innerHTML)
        }
    }
    let vm = new Vue({
        el: '#app',
        data() {
            return {}
        },
        components: {
            comp
        },
    })

 

接下来就是销毁阶段

7.beforedestroy()进入到实例销毁阶段。实例中的所有数据和方法依旧可用。

8.destroyed()函数。实例已经销毁,所有数据和方法均不可用。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中的生命周期函数包括beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy和destroyed。beforeCreate是在Vue实例被创建之前调用的,此时data和methods还未初始化,不能访问DOM,可以在此函数中进行一些初始化的操作。created是在Vue实例被创建之后调用的,此时data和methods已经初始化完成,可以访问DOM,可以在此函数中请求数据、更新数据等操作。beforeMount是在Vue实例挂载到DOM之前调用的,此时模板还未编译成DOM,可以在此函数中进行一些准备工作。mounted是在Vue实例挂载到DOM之后调用的,此时模板已经编译成DOM,可以进行DOM操作。beforeUpdate是在数据更新之前调用的,可以在此函数中进行一些更新前的操作。updated是在数据更新之后调用的,可以在此函数中进行一些更新后的操作。beforeDestroy是在Vue实例销毁之前调用的,可以在此函数中进行一些清理工作。destroyed是在Vue实例销毁之后调用的,此时Vue实例已经完全销毁,可以进行一些最终的清理工作。123 #### 引用[.reference_title] - *1* *3* [Vue生命周期函数详解](https://blog.csdn.net/wen110898/article/details/120520844)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* [Vue 生命周期函数](https://blog.csdn.net/xyfck/article/details/126909930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值