Vue生命周期实例分析总结

作者:月光晒了很凉快 时间:2024-06-07 15:23:38 

1. 概述

每个 Vue 实例在被创建之前都要经过一系列的初始化过程。例如需要设置数据监听、编译模板、挂载实例到 DOM、在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,给予用户机会在一些特定的场景下添加他们自己的代码。

简单来说,生命周期钩子函数就是一堆回调函数,在我们创建实例时,这些回调函数按顺序执行。

2. 页面钩子函数

名称作用
beforeCreate在实例初始化之后,数据观测和事件配置之前被调用。此时 data 和 methods 以及页面的DOM结构都没有初始化,什么都做不了,执行1次
created在实例创建完成后被立即调用,此时data 和 methods 已经可以使用,但是页面还没有渲染出来,执行1次,用this对象
beforeMount在挂载开始之前被调用,此时页面上还看不到真实数据,只是一个模板页面而已,执行1次
mountedel被新创建的vm.$el替换,并挂载到实例上去之后调用该钩子。 数据已经真实渲染到页面上 在这个钩子函数里面,可以进行数据请求等,执行1次
beforeUpdate数据更新时调用,页面上数据还是旧的 n次
updated由于数据更新完毕,页面上数据已经替换成最新的 n次
beforeDestroy实例销毁之前调用,执行1次
destroyed实例销毁后调用,执行1次
activatedkeep-alive 组件激活时调用
deactivatedkeep-alive 组件停用时调用
errorCaptured当捕获一个来自子孙组件的错误时被调用

3. 生命周期函数

Vue生命周期实例分析总结

下面我们用代码实现以下生命周期函数的执行顺序:

<div id="app">
   <input type="text" v-model="username">
</div>
<script>
   const vm = new Vue({
       el: '#app',
       data: {
           username: ''
       },
       // 初始化阶段生命周期  -- 它只都只执行1次
       beforeCreate() {
           console.log('beforeCreate');
       },
       created() {
           console.log('created');
       },
       beforeMount() {
           console.log('beforeMount');
       },
       mounted() {
           console.log('mounted');
           setTimeout(() => {
               // 销毁
               this.$destroy()
           }, 2000);
           this.timer = setInterval(() => {
               console.log(111);
           }, 1000);
       },
       // 更新阶段生命周期,它们会执行N次
       beforeUpdate() {
           console.log('beforeUpdate');
       },
       updated() {
           console.log('updated');
       },
       // 销毁阶段  只执行1次
       beforeDestroy() {
           clearInterval(this.timer)
           console.log('beforeDestroy');
       },
       destroyed() {
           console.log('destroyed');
       }
   })
</script>

Vue生命周期实例分析总结

来源:https://blog.csdn.net/weixin_45605541/article/details/126712322

标签:vue,生命周期,函数
0
投稿

猜你喜欢

  • asp如何制作一个倒计时的程序?

    2010-06-29 21:25:00
  • ThinkPHP中limit()使用方法详解

    2023-11-14 22:05:04
  • Windows10下安装解压版MySQL教程图文详解

    2024-01-12 20:40:57
  • python3爬取各类天气信息

    2022-01-18 06:09:35
  • python和opencv实现抠图

    2023-12-13 20:43:33
  • python基础教程之csv文件的写入与读取

    2021-06-18 21:21:00
  • IE多版本共存的解决方案——IETester(推荐)

    2009-03-26 12:47:00
  • python进行OpenCV实战之画图(直线、矩形、圆形)

    2022-05-30 06:36:05
  • MySQL安装配置以及安装失败解决过程

    2024-01-13 18:55:28
  • Oracle In和exists not in和not exists的比较分析

    2009-08-27 10:07:00
  • Python学习笔记之图片人脸检测识别实例教程

    2021-12-03 06:17:28
  • Python 调用VC++的动态链接库(DLL)

    2023-06-19 09:01:44
  • 多栏自适应布局问题浅谈

    2010-08-16 12:56:00
  • Pandas中describe()函数的具体使用

    2021-03-22 14:32:12
  • 通过事务日志解决SQL Server常见四大故障(一)

    2009-03-25 13:46:00
  • oracle误删数据表还原的二种方法(oracle还原)

    2024-01-14 21:33:55
  • 微信跳一跳php代码实现

    2024-06-05 09:46:20
  • MySQL系列之六 用户与授权

    2024-01-28 05:37:31
  • 详解如何利用Python绘制科赫曲线

    2023-05-02 15:26:42
  • 一文详解Python中logging模块的用法

    2022-03-27 23:09:38
  • asp之家 网络编程 m.aspxhome.com