当前位置:首页 > 技术分析 > 正文内容

前端流行框架Vue3教程:22. 组件生命周期

ruisui883周前 (05-28)技术分析17

22. 组件生命周期

每个Vue组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到DOM,以及在数据改变时更新DOM。在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码

/**
 * 组件的生命周期
 * 1. 创建阶段:beforeCreate,created
 * 2. 挂载阶段:beforeMount,mounted
 * 3. 更新阶段:beforeUpdate,updated
 * 4. 销毁阶段:beforeUnmount,unmounted
 */

在 Vue 中,组件的生命周期是指从创建到销毁的整个过程。Vue 提供了多个钩子函数,允许我们在特定的阶段执行自定义逻辑。

生命周期阶段

Vue 组件的生命周期可以分为四个主要阶段:

1. 创建阶段

  • beforeCreate():组件实例刚刚被创建,此时数据观测和事件配置尚未初始化。
  • created():组件实例已经创建完成,数据观测、属性和事件方法已经配置好。
beforeCreate() {
  console.log('组件创建之前');
},
created() {
  console.log('组件创建完毕');
}

2. 挂载阶段

  • beforeMount():模板编译/挂载之前,此时还没有渲染 DOM。
  • mounted():模板渲染完成,此时可以访问 DOM 元素。
beforeMount() {
  console.log('组件挂载/渲染之前');
},
mounted() {
  console.log('组件挂载/渲染完毕');
}

3. 更新阶段

  • beforeUpdate():组件更新之前,响应式数据发生变化但 DOM 还未更新。
  • updated():组件更新完成后调用,此时 DOM 已经更新。
beforeUpdate() {
  console.log('组件更新之前');
},
updated() {
  console.log('组件更新完毕');
}

4. 销毁阶段

  • beforeUnmount():组件销毁之前调用,此时组件仍然完全可用。
  • unmounted():组件销毁完成后调用,此时所有指令已被解绑,子组件也已被销毁。
beforeUnmount() {
  console.log('组件销毁之前');
},
unmounted() {
  console.log('组件销毁完毕');
}

示例代码

以下是一个完整的示例,展示了如何在 App.vue 文件中使用这些生命周期钩子:

<script>
export default {
  beforeCreate() {
    console.log('组件创建之前');
  },
  created() {
    console.log('组件创建完毕');
  },
  beforeMount() {
    console.log('组件挂载/渲染之前');
  },
  mounted() {
    console.log('组件挂载/渲染完毕');
  },
  beforeUpdate() {
    console.log('组件更新之前');
  },
  updated() {
    console.log('组件更新完毕');
  },
  beforeUnmount() {
    console.log('组件销毁之前');
  },
  unmounted() {
    console.log('组件销毁完毕');
  }
};
</script>

<template>
  <h3>组件的生命周期</h3>
</template>

我们可以看到,页面加载完毕后,执行到了渲染完毕mounted().


那我们加一些代码,让页面数据可以产生变化。

app.vue

<script>
export default {
  data() {
    return {
      messgae: '更新之前'
    }
  },
  methods: {
    updataHandle() {
      this.messgae = '更新之后'
    }
  },
  beforeCreate() {
    console.log('组件创建之前')
  },
  created() {
    console.log('组件创建完毕')
  },
  beforeMount() {
    console.log('组件挂载/渲染之前')
  },
  mounted() {
    console.log('组件挂载/渲染完毕')
  },
  beforeUpdate() {
    console.log('组件更新之前')
  },
  updated() {
    console.log('组件更新完毕')
  },
  beforeUnmount() {
    console.log('组件销毁之前')
  },
  unmounted() {
    console.log('组件销毁完毕')
  }
}

</script>

<template>
  <h3>组件的生命周期</h3>
  <p>{{ messgae }}</p>
  <button @click="updataHandle">更新</button>
</template>

我们点击按钮后就可以看到


通过合理利用这些生命周期钩子,你可以在组件的不同阶段执行必要的操作,例如初始化数据、获取远程数据、清理资源等。这对于构建高效且可维护的 Vue 应用非常重要。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/4375.html

标签: vue案例
分享给朋友:

“前端流行框架Vue3教程:22. 组件生命周期” 的相关文章

2021最全VUE面试题,奥利给

1. vue-router用过没,哪些常用的钩子函数路由钩子的执行流程,钩子函数种类有:全局守卫、路由守卫、组件守卫。首页可以控制导航跳转, beforeEach , afterEach 等,?般?于页? title 的修改。?些需要登录才能调整??的重定向功能。beforeEach 主要有3个参数...

Gitlab之间进行同步备份

目前,我们公司有两个研发团队,分别在北京和武汉,考虑到访问速度的问题,原有武汉的研发环境在近端部署。也就是北京和武汉分别有两套独立的研发管理环境,虽然这解决了近端访问速度的问题,但是管理上较为分散,比如研发环境备份和恢复就是最重要的问题之一。最近,处于对安全性和合规性的考虑,希望将北京和武汉的源代码...

Vue从入门到实践 丨Vue-router基本使用

1. 什么是 vue-routervue-router 是 vue.js 官方给出的路由解决方案。它只能结合 vue 项目进行使用,能够轻松的管理 SPA 项目中组件的切换。vue-router 的官方文档地址:https://router.vuejs.org/zh/2. vue-router 安装...

关于Vue页面跳转传参,参数不同, 但页面只获取参数一次的问题

#头条创作挑战赛#1.问题描述问题描述: element 展示表格(页面A),点击表格的每一行的查看详情按钮,可以携带此行的信息参数跳转到另一个页面(页面B),但是从A页面到B页面,只有第一次跳转的时候B页面可以获取到A页面的参数,返回再次A->B ,B页面无法获取到参数。2.解决办法:方法一...

Vue实战篇|使用路由管理用户权限(动态路由)

权限控制是后台管理系统比较常见的需求,如果我们需要对某些页面的添加权限控制的话,那我们可以在路由管理中的权限做一些校验,没有通过权限校验的给出相应的提示或者直接跳转到报错页面。跟着我一起来学vue实战篇路由管理权限吧!权限校验函数getCurrentAuthority()函数用于获取当前用户权限,一...

同步和异步的区别是什么,同步和异步的代码

同步和异步的区别在于程序执行操作时是否需要等待操作完成。同步操作意味着程序在执行一个操作时会一直等待操作完成才继续执行下一个操作,而异步操作则是指程序执行一个操作时,不会等待操作完成,而是立即返回,继续执行后面的操作。以下是同步和异步的代码示例:同步代码示例:console.log("sta...