首页 > 其他分享 >vue 的生命周期

vue 的生命周期

时间:2024-12-27 09:59:56浏览次数:7  
标签:触发 生命周期 DOM 钩子 更新 vue 组件 挂载

一、创建阶段(BeforeCreate、Created)

1. BeforeCreate

这是组件实例刚被创建时触发的第一个生命周期钩子。此时,组件的`data`和`methods`等选项还没有被初始化,数据观察(`watch`)和事件/生命周期方法也尚未被设置。这意味着在这个阶段,组件实例还只是一个空壳,不能访问组件中的数据和方法。

主要用于一些初始的设置或者加载外部资源,不过由于数据和方法不可用,其应用场景相对较少。

2. Created

这个钩子在组件实例完成数据观测(`data observer`)和事件配置后被触发。此时,组件的`data`属性已经被初始化,可以访问和操作组件的数据和方法。

通常用于初始化数据、调用方法,是在组件创建阶段比较常用的钩子。

二、挂载阶段(BeforeMount、Mounted)

1. BeforeMount

在这个阶段,模板编译已经完成,但还没有将编译后的模板挂载到真实的 DOM 节点上。此时,`el`属性已经被解析,但虚拟 DOM(`v-node`)还没有渲染成真实的 DOM 元素。可以理解为,组件已经知道要挂载到哪里,但还没有进行实际的挂载操作。

这个钩子可以用于在挂载之前对 DOM 结构进行最后的调整或者添加一些自定义的属性。不过这种操作相对较少,因为大多数情况下,组件的 DOM 结构在模板阶段就已经确定。

2. Mounted

这是组件挂载完成后的钩子。此时,组件已经被渲染到真实的 DOM 中,可以通过`this.$el`访问组件的 DOM 元素。对于需要操作 DOM 元素的操作,如获取元素的高度、宽度,或者添加一些第三方 DOM-related 的插件,通常在这个钩子中进行。

三、更新阶段(BeforeUpdate、Updated)

1. BeforeUpdate

当组件的数据发生变化,即将重新渲染之前触发这个钩子。此时,组件的虚拟 DOM 已经重新生成,但还没有应用到真实的 DOM 上。可以在这个钩子中获取到变化前的 DOM 状态,对于一些需要在更新前记录状态或者进行特殊处理的情况很有用。

2. Updated

组件的 DOM 更新完成后触发这个钩子。此时,组件的虚拟 DOM 已经更新,并且对应的真实 DOM 也已经更新。不过需要注意的是,在这个钩子中避免进行会再次触发更新的操作,否则可能会导致无限循环更新。

可以用于在组件更新后执行一些依赖于 DOM 更新的操作,比如重新计算组件内元素的位置或者样式。在一个包含动画效果的组件中,当组件数据更新导致动画元素的属性变化时,可能在`Updated`钩子中启动或者调整动画效果。

四、销毁阶段(BeforeDestroy、Destroyed)

1. BeforeDestroy

在组件被销毁之前触发。此时,组件仍然完全可用,`data`、`methods`等仍然可以访问。这个钩子通常用于清理一些定时器、取消网络请求、移除事件监听器等操作,以避免内存泄漏。

2. Destroyed

组件销毁完成后触发。此时,组件的所有指令、事件监听器等都已经被移除,组件实例以及其相关的 DOM 元素(如果有的话)都已经从内存中被清除。这个钩子主要用于一些最后的清理工作或者日志记录。

标签:触发,生命周期,DOM,钩子,更新,vue,组件,挂载
From: https://blog.csdn.net/weixin_64684095/article/details/144759836

相关文章

  • vue 中 keep-alive 详解
    一、定义与作用`keep-alive`是Vue.js提供的一个内置组件,用于缓存动态组件。当一个组件被包裹在`keep-alive`组件内部时,在组件切换过程中,该组件的状态(如组件中的数据、DOM状态等)会被保留,而不是像普通组件那样被销毁和重新创建。这对于提高应用性能和用户体验非常有用,特别是......
  • vue父组件接收子组件方法传递多个参数时追加参数
    VUE3子组件<template> <viewclass=""> <viewclass=""@click="handleClick">1</view> <viewclass=""@click="handleClick2">2</view> </view></template><......
  • vue3 setup函数内的防抖/节流节流不生效解决方式
    //debounce<template><!--生效--><el-inputv-model="value"@keyup="handelKeyUp"></el-input><!--不生效--><el-inputv-model="value"@keyup="debounce(handelKeyUp2,300)">......
  • Vue 搭建开发环境
    一、下载js包二、引用js包<!--引用Vue包--><scripttype="text/javascript"src="../js/vue.js"></script>三、安装VueDevtools1、下载链接:链接:https://pan.baidu.com/s/1tKqpbZMRG1iC2PUgjsKOow提取码:55me2、Chrome浏览器安装点击右上角三个点->点击更......
  • 基于SpringBoot+Vue公司员工在线餐饮管理系统的设计与实现
    博主主页:一季春秋博主简介:专注Java技术领域和毕业设计项目实战、Java微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联......
  • 基于SpringBoot+Vue小说阅读平台的设计与实现
    博主主页:一季春秋博主简介:专注Java技术领域和毕业设计项目实战、Java微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联......
  • Vue-跨域、计算属性、监听属性
    跨域同源策略:同源策略会引起跨域问题,是浏览器中的安全协议,主机、协议、端口只要有一个不一致,就会引起同源策略,从而引起跨域问题解决办法:1.放开后台(不安全)2.利用script标签中的src属性不受同源策略影响的特点,这种方式叫做JSONP(也需要跟后台配合)3.配置代理(在本地起一个服务,再去......
  • vue3入门教程:ref能否完全替代reactive?
    1.使用场景与数据类型ref:主要用于基本数据类型(如String、Number、Boolean等)。也可以用于对象/数组,但需要通过.value访问。适合单个响应式数据的管理。reactive:主要用于对象类型(如Object、Array)。直接访问属性,不需要.value。适合多个响应式数据的管理。2.访问方式......
  • 基于SpringBoot+Vue+Uniapp的公开课管理小程序(毕业设计/课程设计源码+论文+部署)
    文章目录前言文档图(系统结构图、ER图、用例图等)详细视频演示本系统运行效果图后台管理技术框架后端采用SpringBoot框架前端框架Vue选题推荐(部分)成品项目展示(部分)系统测试系统测试的目的系统功能测试代码参考为什么选择我?获取源码前言......
  • 基于Uniapp + SpringBoot + Vue的酒店管理APP(毕业设计/课程设计源码+论文+部署)
    文章目录前言文档图(系统结构图、ER图、用例图等)详细视频演示本系统运行效果图后台管理技术框架后端采用SpringBoot框架前端框架Vue选题推荐(部分)成品项目展示(部分)系统测试系统测试的目的系统功能测试代码参考为什么选择我?获取源码前言......