vue生命周期详解

初心-杨瑞超个人博客诚邀您加入qq群(IT-程序猿-技术交流群):757345416

先上图:
在这里插入图片描述

下面我们用实例来理解生命周期:

<div class="test" style="border: 1px black dashed;padding: 8px;">
            <p>{{demo}}</p>
            <button v-on:click="change">点击改变a值</button>            
        </div>
        <button>销毁Vue实例在控制台输入vm.$destory()</button>
        <script type="text/javascript">
            var vm = new Vue({
                el: ".test",
                data: {
                    demo: "绑定myValue.a的值"
                },
                methods:{
                  change:function(){
                    this.demo="这是改变后的";
                  },
                  destory1:function(){
                     this.$destory();
                  }
                },
               beforeCreate:function(){
                    console.log("组件实例刚被创建,组件属性计算之前");
               },
               created:function(){
                    console.log("组件实例创建完成,属性已绑定,但DOM未生成,$el属性还不存在。 ");
               },
               beforeMount:function(){
                    console.log("模板编译/挂载之前");
               },
               mounted :function(){
                    console.log(" 模板编译/挂载之后    ");
               },
               beforeUpdate: function(){
                    console.log("组件更新之前  ");
               },
               updated:function(){
                    console.log("组件更新之后  ");
               },
               beforeDestroy:function(){
                    console.log("组件销毁之前  ");
               },
               destroyed:function(){
                    console.log("组件销毁之后");
               }
        });
        </script>

文章到此结束,希望对你的学习有帮助!

Vue 3组件的生命周期是开发者构建动态应用时的重要工具。与Vue 2相比,Vue 3引入了组合式API(Composition API),并保留了选项式API(Options API)的支持。生命周期钩子在两种API风格中都可用,但在使用方式上有所不同。 ### Vue 3 生命周期概览 Vue 3 的生命周期可以分为三个主要阶段:**创建阶段、更新阶段和销毁阶段**。每个阶段都有对应的钩子函数,允许在特定时刻执行自定义逻辑[^1]。 #### 创建阶段 - `beforeCreate`:这是最早被调用的钩子之一,在实例初始化之后立即调用。此时,数据观测(data observer)尚未开始,属性和方法还未设置,因此不能访问这些内容。 - `created`:在实例创建完成后被调用。这时,数据观测已经完成,属性和方法也已设置完毕,但DOM还没有挂载,所以不能访问到真实的DOM元素。 - `beforeMount`:在挂载开始之前被调用。此时模板编译已经完成,但尚未渲染到页面上。在这个阶段可以进行一些最后的数据准备工作。 - `mounted`:实例已经被挂载到了DOM上后调用。这时候可以安全地访问和操作DOM以及通过AJAX获取数据等操作[^2]。 #### 更新阶段 - `beforeUpdate`:当数据发生改变导致虚拟DOM重新渲染前被调用。适合在此阶段进行更新前的准备或清理工作。 - `updated`:在由于数据更改引起的虚拟DOM重新渲染和打补丁后调用。此时组件DOM已经更新,可以执行依赖于DOM的操作。然而应避免在此期间更改状态以防止无限循环[^3]。 #### 销毁阶段 - `beforeUnmount`(Vue 2 中为 `beforeDestroy`):在卸载组件之前调用。此时组件仍然完全可用,是一个执行任何清理工作的良好时机。 - `unmounted`(Vue 2 中为 `destroyed`):组件已经被卸载后调用。此时组件的所有指令都被解绑,所有事件监听器被移除,且无法再访问组件实例中的任何数据和方法[^4]。 ### 使用 Composition API 时的生命周期钩子 在使用 Composition API 时,需要从 `vue` 导入相应的生命周期钩子函数,并像普通函数一样调用它们: ```javascript import { onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted } from 'vue'; export default { setup() { onBeforeMount(() => { // 在这里执行挂载前的代码 }); onMounted(() => { // 在这里执行挂载后的代码 }); // 其他生命周期钩子类似... return {}; } } ``` ### 父子组件生命周期执行顺序 当涉及到父子组件时,父组件会先于子组件经历其生命周期阶段。例如,父组件的 `beforeMount` 钩子会在子组件的 `beforeMount` 和 `mounted` 钩子之前被触发;而父组件的 `mounted` 钩子则会在所有子组件都被挂载之后才被触发。这种顺序确保了整个组件树能够按照正确的顺序构建起来[^3]。 通过理解和利用好这些生命周期钩子,开发者可以更有效地管理组件的行为,包括但不限于初始化资源、响应数据变化以及释放不再需要的资源等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值