Vue生命周期中的重要8个阶段

vue的生命周期是什么

Vue 实例从创建到销毁的过程,就是生命周期。也就是从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程,我们称这是 Vue 的生命周期。

vue生命周期的作用是什么?

让我们在控制整个Vue实例的过程时更容易形成好的逻辑。

要想很好滴了解Vue生命周期就要看下官方给的图

 我们可以清晰的看出顺序从上到下被执行,其中我们能看见你的有8的标志性的函数我们先在来

介绍下!

1、创建前(beforeCreate)

对应的钩子函数为beforeCreate。此阶段为实例初始化之后,此时的数据观察和事件机制都未形成,不能获得DOM节点。

2、创建后(created)

对应的钩子函数为created。在这个阶段vue实例已经创建,仍然不能获取DOM元素。

3、载入前(beforeMount)

对应的钩子函数是beforeMount,在这一阶段,我们虽然依然得不到具体的DOM元素,但vue挂载的根节点已经创建, 下面vue对DOM的操作将围绕这个根元素继续进行;beforeMount这个阶段是过渡性的,一般一个项目只能用到一两次。

4、载入后(mounted)

对应的钩子函数是mounted。mounted是平时我们使用最多的函数了,一般我们的异步请求都写在这里。在这个阶段,发送请求  启动定时器 绑定自定义事件。

5、更新前(beforeUpdate)

对应的钩子函数是beforeUpdate。在这一阶段,vue遵循数据驱动DOM的原则。beforeUpdate函数在数据更新后虽然没立即更新数据,但是DOM中的数据会改变,这是Vue双向数据绑定的作用。

6、更新后(updated)

对应的钩子函数是updated。在这一阶段DOM会和更改过的内容同步。

7、销毁前(beforeDestroy)

对应的钩子函数是beforeDestroy。在上一阶段Vue已经成功的通过数据驱动DOM更新,当我们不再需要vue操纵DOM时, 就要解绑自定事件 清除定时器,取消订阅消息等收尾工作。

8、销毁后(destroyed)

对应的钩子函数是destroyed。在销毁后,会触发destroyed钩子函数。
 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
<div id="root">
    <!--    <h2>当前n的值是:<span v-text="n"></span></h2>-->
    <!--    <button @click="add">点我n++</button>-->
    <!--    <button @click="bye">点击销毁vm</button>-->
</div>

<script src="./js/vue.js"></script>
<script>
    Vue.config.productionTip = false;
    let vm = new Vue({
        el: '#root',
        template: `
          <div>
          <h2>当前n的值是:<span v-text="n"></span></h2>
          <button @click="add">点我n++</button>
          <button @click="bye">点击销毁vm</button>
          </div>`,
        data() {
            return {
                n: 1
            }
        }, methods: {
            add() {
                console.log("执行了Add函数");
                this.n++;
            },
            bye() {
                console.log("执行了销毁函数");
                this.$destroy();
            }
        }, watch: {
            n() {
                console.log("n变了");
            }
        },
        beforeCreate() {
            console.log("beforeCreate");
            console.log(this.n);
        },
        created() {
            console.log("created");
            console.log(this.n);
        }, beforeMount() {
            console.log("beforeMount");
        },mounted(){
            console.log("mounted");
        },beforeUpdate(){
            console.log("beforeUpdate");
        },
        updated(){
            console.log("updated");
        },
        beforeDestroy(){
            console.log("beforeDestroy");
        },
        destroyed(){
            console.log("destroyed");
        }
    });
</script>
</body>
</html>

我看看下执行的后台

 创建前(beforeCreate):

                 console.log(this.$el);
            console.log(this.$data);

输出结果为:undefined

此时模板和数据都未载入所以就是undefined。

当点击add()方法时beforeUpdate和Update函数启动

关闭后自动调用销毁函数。

此时整个生命周期就此结束。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue生命周期共有 8 个阶段: 1. beforeCreate: 实例刚在内存被创建出来,此时还没有初始化好 data 和 methods 属性 2. created: 实例已经在内存创建好了,此时 data 和 methods 已经初始化好了,但是还没有开始编译模板和挂载 Dom 3. beforeMount: 编译好的模板和数据将要被渲染成真实的 Dom 结构 4. mounted: 真实的 Dom 结构已经被渲染出来并挂载到页面上 5. beforeUpdate: 数据更新之调用,发生在虚拟 Dom 打补丁之 6. updated: 虚拟 Dom 重新渲染并打补丁之后调用 7. beforeDestroy: 实例销毁调用 8. destroyed: 实例已经被销毁 注意: 不要在 beforeUpdate 和 beforeDestroy 执行异步操作。 ### 回答2: Vue生命周期包括以下几个阶段: 1. 创建阶段(Creation):在这个阶段Vue实例正在初始化,会执行一些基本的设置,如数据观测、事件配置等。主要包括`beforeCreate`和`created`这两个生命周期钩子函数。 2. 模板编译阶段(Compilation):在这个阶段Vue会将模板编译为虚拟DOM,以便后续的渲染过程。这个阶段主要包括`beforeMount`和`mounted`这两个生命周期钩子函数。 3. 更新阶段(Updating):在这个阶段Vue会根据数据的变化来更新DOM。主要包括`beforeUpdate`和`updated`这两个生命周期钩子函数。在更新阶段,如果发现依赖的数据发生了变化,会触发重新渲染。 4. 销毁阶段(Destruction):在这个阶段Vue实例将被销毁,清理一些无用的资源。主要包括`beforeDestroy`和`destroyed`这两个生命周期钩子函数。 这些生命周期钩子函数分别在不同阶段被调用,并且允许我们在特定的时间点添加自定义的逻辑。可以通过在Vue实例定义这些钩子函数来实现对应阶段的操作。 ### 回答3: Vue生命周期包括以下几个阶段: 1. beforeCreate(创建):在实例初始化之被调用。此时,Vue实例的配置选项尚未应用,也没有访问到数据和DOM。 2. created(创建后):实例创建完成后被调用。此时,Vue实例已经完成数据观察、属性和方法的运算,但尚未挂载DOM。 3. beforeMount(挂载):在挂载开始之被调用。此时,Vue实例的模板编译已完成,但尚未将生成的DOM替换到页面。 4. mounted(挂载后):在挂载完成后被调用。此时,Vue实例的DOM已经被渲染到页面,可以进行DOM操作。 5. beforeUpdate(更新):在数据更新之被调用,可以在这个钩子进行一些更新的操作。 6. updated(更新后):在数据更新之后被调用,此时DOM结构也已更新。可以进行DOM操作,但要避免在此钩子修改数据。 7. beforeDestroy(销毁):在实例销毁被调用。此时,Vue实例仍然可用,可以进行一些清理工作。 8. destroyed(销毁后):在实例销毁之后被调用。此时,Vue实例的所有事件监听器和子实例都已被移除。 这些生命周期钩子函数在Vue实例的不同阶段被调用,可以用于执行一些特定的操作,比如初始化数据、请求数据、计算属性、监听事件、设置定时器、释放资源等。了解和合理使用这些生命周期钩子函数,可以更好地管理Vue实例的生命周期,提高应用程序的性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值