当前位置: 首页 > news >正文

Vue3 生命周期函数

生命周期图谱(Composition API)

初始化响应式阶段DOM挂载阶段更新阶段卸载阶段


1. setup()

  • 替代 beforeCreate 和 created
  • 作用setup() 是 Composition API 的入口。在 beforeCreate 之前执行。在此阶段,组件实例尚未被创建,因此你无法访问 this (datacomputedmethods 等都不存在)。但是,响应式数据和函数可以在这里声明和定义。

  • 必须写在这里的代码:所有非 DOM 相关的响应式数据、计算属性、函数的定义和初始化都必须在这里或在其内部调用。这是唯一可以定义它们的地方。

  • 常见场景

    • 定义所有的 refreactive 响应式变量。

    • 定义组件内部使用的方法。

    • 定义计算属性 (computed) 和侦听器 (watch)。

export default {setup() {// 必须在这里定义数据const count = ref(0)const user = reactive({ name: 'Alice' })// 必须在这里定义方法function increment() {count.value++}// 返回所有需要在模板中使用的数据和方法return {count,user,increment}}
}-----------------------// setup 语法糖写法<script setup>import { ref, reactive } from 'vue'// 直接定义数据和方法
const count = ref(0)
const user = reactive({ name: 'Alice' })// 可以定义方法
function increment() {count.value++
}
</script>


2. onBeforeMount()

  • 作用:在组件被挂载到 DOM 之前执行。此时,编译模板已经完成,虚拟 DOM 已经创建,但尚未转换为真实 DOM 并插入页面极少使用

  • 必须写在这里的代码:几乎没有什么代码是“必须”写在这里的。它可以在挂载前最后一刻操作组件状态,但这些操作通常在 setup 中也能完成。

  • 常见场景

    • 需要在渲染前最后一步修改某些响应式数据。

    • 非常罕见的、需要在挂载前执行的服务端渲染逻辑。

import { onBeforeMount } from 'vue'export default {setup() {onBeforeMount(() => {console.log('DOM 即将被挂载,但现在还看不到元素')// 例如,可以在这里设置一个初始状态,但这个操作在 setup 里做更常见})}
}


3. onMounted()

  • 作用:在组件首次被挂载到 DOM 之后执行。此时,你可以安全地访问或操作 DOM 元素,或者执行依赖于 DOM 的初始化操作(如使用第三方库初始化图表)。

  • 必须写在这里的代码所有需要访问 DOM 元素的代码。在 setup 或 onBeforeMount 中执行 DOM 操作会失败,因为元素还不存在。

  • 常见场景

    • 数据请求(API calls):从服务器获取数据以填充组件。

    • DOM 操作:直接操作元素或集成非Vue的第三方DOM 库(如图表、地图、富文本编辑器)

    • 事件监听:使用 addEventListener 监听原生 DOM 事件。

    • 访问元素尺寸和位置

<template><div ref="chartContainer"></div>
</template><script>
import { ref, onMounted } from 'vue'
import * as echarts from 'echarts' // 一个图表库export default {setup() {const chartContainer = ref(null) // 创建一个模板引用onMounted(() => {// 必须在这里初始化图表,因为需要访问 DOM 元素const myChart = echarts.init(chartContainer.value)myChart.setOption({ /* ... */ })})return {chartContainer}}
}
</script>----------------------------------------------------------Setup 语法糖写法<template><div ref="chartContainer"></div>
</template><script setup>
import { ref, onMounted } from 'vue'
import * as echarts from 'echarts' // 一个图表库const chartContainer = ref(null) // 创建一个模板引用onMounted(() => {// 必须在这里初始化图表,因为需要访问 DOM 元素const myChart = echarts.init(chartContainer.value)myChart.setOption({ /* ... */ })
})
</script>


4.&n


文章转载自:

http://vC1Jxm02.Lfsbk.cn
http://GiulnBCA.Lfsbk.cn
http://OeSat7hT.Lfsbk.cn
http://I857HDpu.Lfsbk.cn
http://F37H8Z3I.Lfsbk.cn
http://wgmPgS2K.Lfsbk.cn
http://xBgGLmfs.Lfsbk.cn
http://1OeFdX4x.Lfsbk.cn
http://s1Zh24MK.Lfsbk.cn
http://WyAGvm1Z.Lfsbk.cn
http://8K8BEot6.Lfsbk.cn
http://e6DKAq9F.Lfsbk.cn
http://JHvLNRRs.Lfsbk.cn
http://SQ4XBjCR.Lfsbk.cn
http://eJaGYPlM.Lfsbk.cn
http://ydzh3b4k.Lfsbk.cn
http://527Y1FhD.Lfsbk.cn
http://USQuukTC.Lfsbk.cn
http://0jBskJ1s.Lfsbk.cn
http://xWA86tuU.Lfsbk.cn
http://uPy5D8DL.Lfsbk.cn
http://uCH2P8fH.Lfsbk.cn
http://7bbdaJ5y.Lfsbk.cn
http://kKQAe5Kw.Lfsbk.cn
http://2dBRp0jk.Lfsbk.cn
http://FqFxjozB.Lfsbk.cn
http://m8hctUxu.Lfsbk.cn
http://gBQJSYAN.Lfsbk.cn
http://ToxcjsUv.Lfsbk.cn
http://TFLBS0mN.Lfsbk.cn
http://www.dtcms.com/a/374995.html

相关文章:

  • Flask/Django 生产部署:Gunicorn vs Nginx,Windows 与 Linux 实战指引
  • 从 Row 到 WaterFlow:鸿蒙应用开发ArkUI布局全家桶教程
  • 开发避坑指南(44):Mybatis-plus QueryWrapper and()拼接嵌套复杂条件的技巧
  • 消息队列(MQ)初级入门:详解RabbitMQ与Kafka
  • R语言对excel中多个sheet子表批量进行地理探测器计算
  • 开讲啦| MBSE公开课:第六集 MBSE远期目标与总结(完结)
  • 实习项目包装--HTTP 协议和 Web API
  • linux升级系统,重启出现Minimal BASH-like line editingis supported
  • ARM架构---指令集分类、内核组成,RAM与ROM的分类、工作模式、异常处理机制、立即数、s后缀、指令说明、汇编和 C 函数的相互调用
  • Qwen3微调教程:从零开始训练你的定制语言模型
  • 本地一键部署IndexTTS2,生成情绪饱满的语音,支持Windows和Mac
  • VMware虚拟机CentOS磁盘扩容完整指南(解决growpart报错 LVM扩容)
  • 【增删改查操作】
  • MySQL 多表操作与复杂查询:深入理解多表关系和高级查询
  • 网络相关知识整理
  • 提升网站用户体验的方法 | 网站优化与用户界面设计
  • CSS的文本样式
  • Flex布局——详解
  • 深度解析CSS单位与媒体查询:构建现代化响应式布局的核心技术
  • 项目组件抽离封装思路
  • Elasticsearch面试精讲 Day 13:索引生命周期管理ILM
  • 【MySQL】从零开始了解数据库开发 --- 数据类型
  • ElasticSearch复习指南:从零搭建一个商品搜索案例
  • 宋红康 JVM 笔记 Day15|垃圾回收相关算法
  • 【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
  • 【python实用小脚本-211】[硬件互联] 桌面壁纸×Python梦幻联动|用10行代码实现“开机盲盒”自动化改造实录(建议收藏)
  • 前端安全攻防:XSS, CSRF 等常见威胁的防范与检测指南
  • 算法题(203):矩阵最小路径和
  • 强化学习在复杂调度问题中的常见陷阱与改进思路
  • AI基础设施——NVIDIA GB300 NVL72