【前端学习之路】——Vue生命周期

生命周期:其实就是一个组件从创建到销毁的这个过程叫做生命周期(钩子函数)

其实从官网的生命周期的图例就可以看出来,生命周期分八个阶段
分别为:beforeCreate,created,beforeMount,mounted,beforeUpdate,updated,beforeDestory,destroyed

接下来,我们就一个阶段一个阶段的尝试,实验并且理解。

在开始之前,我们需要先搭建一个实例的模板出来:

<body>
    <div id="app">
        <h3 id="h3">{{msg}}</h3>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        var vm=new Vue({
            el:"#app",
            data:{
                msg:"aaa"
            },
            methods:{
                show(){
                    console.log("bbb")
                }
            }
        })
    </script>

</body>

这时候页面上显示的是:
在这里插入图片描述

1、创建前(beforeCreate)

这是我们遇到的第一个生命周期函数,它表示的是在实例创建出来之前,会执行它,此时,还没有data和methods属性

var vm=new Vue({
            el:"#app",
            data:{
                msg:"aaa"
            },
            methods:{
                show(){
                    console.log("bbb")
                }
            },
            //这是我们遇到的第一个生命周期函数
            //表示实例在创建出来之前,会执行它,此时,还没有data和methods属性
            beforeCreate(){
                //在beforeCreate生命周期函数执行的时候,data和methods都没被初始化
                //当我们在页面上想拿到自己定义的msg的时候,这时候页面现实的是undefind
                console.log(this.msg)
                
            }
        })

页面上显示:
在这里插入图片描述

2、 创建后(created)

这是我们遇到的第二个生命周期函数,在created里,此时data和methods都被创建好了,但仍然不能获取Dom元素

//这是我们遇到的第二个生命周期函数
            created(){
                //在created里,此时data和methods都被创建好了,但仍然不能获取Dom元素
                console.log(this.msg)   //aaa
                this.show()  //bbb
            },

此时,我们看一下我们页面上显示的内容吧
在这里插入图片描述
此时,数据data已经初始化完成,方法也已经可以调用,但是DOM未渲染。

3、载入前(beforeMount)

表示模板已经在内存中编译完成了,但是还没把模板渲染到页面中去,在执行beforeMount的时候,页面中的元素还没有真正被替换过来,只是之前写的一些模板字符串

 //这是我们遇到的第三个生命周期函数(载入前)
            //表示模板已经在内存中编译完成了,但是还没把模板渲染到页面中去
            beforeMount(){
                //在执行beforeMount的时候,页面中的元素还没有真正被替换过来,只是之前写的一些模板字符串
                //让我们来获取一下当前页面上的元素吧
                console.log(document.getElementById("h3").innerText)
            },
           

此时,页面上显示着
在这里插入图片描述
并没有替换到我们的要显示的aaa

4、载入后(mounted)

这是我们遇到的第四个生命周期函数,这时候拿到的就是页面中的最新的数据,注意:mounted是实例创建期间的最后一个生命周期函数

			mounted(){
                //此时我们再来获取一下页面上的元素吧
                console.log(document.getElementById("h3").innerText)
            },

此时页面上打印出来的是:
在这里插入图片描述
注意:mounted是实例创建期间的最后一个生命周期函数,当执行完mounted就表示实例已经被完全创建好了,如果没有其它操作的话,这个实例,就静静的 躺在我们的内存中,一动不动

接下来,就是运行中的两个事件,这时候表示我们的界面还没有被更新,但是数据肯定被更新了

5、更新前(beforeUpdate)

当执行beforeUpdate的时候,页面中的显示数据,还是旧的,此时data数据是最新的,页面尚未和最新的数据保持同步

//接下来是运行中的两个事件
			//这时候表示我们的界面还没有被更新
			//【数据被更新了吗?】数据肯定被更新了
            beforeUpdate(){
                //获取下当前页面上显示的是
                console.log("当前显示的是"+document.getElementById("h3").innerText)
                //当前的数据是:
                console.log("当前数据是:"+this.msg)
            },

当执行这个的时候,我们需要更改页面上的数据,当你触发几次他就会执行几次,最少0次(数据从没被改变),最多无数次。

此时打印出来的是,此时,我们给那个按钮绑定了一个点击事件,只要一点击那个按钮,页面上的数据就会更改一下,原来是aaa,现在改为了bbb,但是打印出来的可不是这样的
在这里插入图片描述

6、更新后(updated)

此时,页面和data数据都保持同步了,都是最新的。

			updated(){
                //获取下当前页面上显示的是
                console.log("当前显示的是:"+document.getElementById("h3").innerText)
                //当前的数据是:
                console.log("当前数据是:"+this.msg)
            },

此时,当我们点击按钮时,页面上打印的是在这里插入图片描述
//当前页面上的数据是bbb,msg数据也是bbb

7、销毁前(beforeDestroy)

当执行beforeDestory钩子函数的时候,vue实例,就已经从运行阶段进入到销毁阶段,实例身上的所有的data和所有的methods以及过滤器,都处于可用的状态,但此时,还没有真正执行到销毁的过程。

8、销毁后(destroyed)

当执行到destroyed函数的时候,组件已经被完全销毁了,此时,组件中所有的数据,方法,指令,还有过滤器,所有的东西都已经不可以用了~

下面是我自己在官网图上总结下来的:

在这里插入图片描述

此篇文章笔记纯是个人总结,如有说错,欢迎在评论区或者私信交流,一起学习进步。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue生命周期是指Vue组件实例在创建、更新和销毁过程中经历的一系列钩子函数。具体来说,Vue生命周期包括以下几个阶段和对应的钩子函数: 1. 创建阶段: - beforeCreate:在实例被创建之前被调用。此时,实例的数据、计算属性和方法都还未初始化,无法访问。 - created:在实例被创建后立即调用。此时,实例的数据、计算属性和方法已经初始化完成,但还未被挂载到DOM上。 2. 挂载阶段: - beforeMount:在挂载开始之前被调用。此时,模板编译已经完成,但还未将实例挂载到DOM上。 - mounted:在挂载完成之后被调用。此时,实例已经被挂载到DOM上,可以进行DOM操作和异步请求。 3. 更新阶段: - beforeUpdate:在数据更新之前被调用。此时,实例的数据发生变化,但DOM尚未更新。 - updated:在数据更新之后被调用。此时,实例的数据已经更新,DOM也已经重新渲染。 4. 销毁阶段: - beforeDestroy:在实例销毁之前被调用。此时,实例仍然可以访问及操作。 - destroyed:在实例销毁之后被调用。此时,实例及其相关的所有东西都已被清理,监听器和事件已被移除。 通过在这些钩子函数中编写代码,可以在不同阶段执行相应的操作,比如初始化数据、发送请求、更新DOM等。这些钩子函数提供了灵活的扩展和定制组件行为的机会,使开发者能够更好地控制和理解组件的生命周期。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [前端开发面试题—Vue生命周期](https://blog.csdn.net/weixin_53231455/article/details/126446179)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [前后端分离vue.js+spring boot 计算机软件工程课程设计毕业设计 前端 后端](https://download.csdn.net/download/Amzmks/88275824)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值