深入理解 Vue 3 的 onLoad 和 onReady 生命周期及相关知识点

深入理解 Vue 3 的 onLoadonReady 生命周期及相关知识点

在 Vue 3 中,生命周期钩子是组件开发的重要组成部分,用于管理组件的创建、挂载、更新和销毁的各个阶段。在基于 Vue 的框架(例如 WeChat 小程序的 Vue 语法糖支持)中,onLoadonReady 也是常见的生命周期钩子。

本文将详细解析这两个生命周期钩子的用途、使用方法,并提供完整示例和最佳实践。


什么是生命周期钩子?

生命周期钩子是指在组件从创建到销毁的过程中,Vue 提供的一系列事件点,允许开发者在特定阶段插入自定义逻辑。在 Vue 3 中,最常用的生命周期钩子包括:

  • onBeforeMount:组件挂载到 DOM 之前。
  • onMounted:组件挂载到 DOM 之后。
  • onBeforeUpdate:组件数据更新前。
  • onUpdated:组件数据更新后。
  • onBeforeUnmount:组件卸载前。
  • onUnmounted:组件卸载后。

在 WeChat 小程序中,Vue 语法糖支持了类似的生命周期钩子,如 onLoadonReady,专门用于小程序页面的生命周期管理。


onLoadonReady 的含义

在 WeChat 小程序中:

  • onLoad:页面加载时触发,接收页面的参数。这是处理页面初始化逻辑的主要入口。
  • onReady:页面首次渲染完成后触发,适合执行依赖页面渲染完成的逻辑。

在 Vue 语法糖的支持下,这两个钩子可以通过 Vue 3 的组合式 API 和语法糖写法轻松使用。


onLoadonReady 的对比

生命周期钩子触发时机常见用途
onLoad页面首次加载时调用初始化数据、解析路由参数等
onReady页面首次渲染完成时调用获取 DOM 节点、执行动画等

在 Vue 3 中使用 onLoadonReady

以下是一个使用 Vue 语法糖编写的小程序页面示例,展示如何在页面中使用 onLoadonReady

示例代码

<template><view class="container"><text>{{ message }}</text><view id="example" class="box"></view></view>
</template><script setup>
import { ref, onMounted } from 'vue'
import { onLoad, onReady } from '@dcloudio/uni-app'const message = ref('页面加载中...')// 页面加载时
onLoad((query) => {console.log('页面参数:', query)message.value = `欢迎访问!页面参数:${JSON.stringify(query)}`
})// 页面渲染完成时
onReady(() => {const box = uni.createSelectorQuery().select('#example')box.boundingClientRect((rect) => {console.log('box 的位置信息:', rect)}).exec()
})// Vue 组合式 API 示例
onMounted(() => {console.log('Vue 组件挂载完成')
})
</script><style scoped>
.container {display: flex;flex-direction: column;align-items: center;padding: 20px;
}
.box {width: 100px;height: 100px;background-color: skyblue;
}
</style>

代码解析

1. onLoad 用法

onLoad 是页面加载的第一个生命周期钩子,适合用于获取路由参数或初始化页面状态。

在代码中:

onLoad((query) => {console.log('页面参数:', query)message.value = `欢迎访问!页面参数:${JSON.stringify(query)}`
})

我们通过 onLoad 获取页面的参数 query,并动态设置 message,以便页面加载时展示对应的信息。

2. onReady 用法

onReady 在页面首次渲染完成后触发,可以用来执行一些依赖 DOM 的操作。

在代码中:

onReady(() => {const box = uni.createSelectorQuery().select('#example')box.boundingClientRect((rect) => {console.log('box 的位置信息:', rect)}).exec()
})

我们使用 uni.createSelectorQuery 获取 DOM 节点的位置信息,这些操作需要等待页面渲染完成。

3. 结合 Vue 组合式 API

同时,我们还可以使用 Vue 的标准组合式 API,如 onMounted,与小程序的生命周期钩子互补。


常见问题和最佳实践

1. 如何处理数据传递?

onLoad 中的 query 参数是页面传递的所有参数,推荐通过路由传参并统一解析。

示例:

onLoad((query) => {console.log('接收到的参数:', query)
})

2. 如何保证 DOM 操作的安全性?

onReady 是专门为依赖 DOM 操作设计的钩子,避免在 onLoad 中操作 DOM。


总结

onLoadonReady 是小程序中两个关键的生命周期钩子。在 Vue 3 的语法糖支持下,可以更方便地与 Vue 的组合式 API 一起使用,从而实现清晰且高效的页面逻辑。

以下是它们的核心要点:

  • onLoad:页面加载,适合初始化数据。
  • onReady:页面渲染完成,适合 DOM 操作。

希望通过本文的讲解,能帮助你在实际开发中更好地理解和使用这些生命周期钩子。


如果你觉得本文对你有帮助,请点赞收藏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/19926.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Java SE】数据库连接池

数据库连接池是一个管理数据库连接的容器。它的主要作用是分配和管理数据库连接&#xff0c;允许应用程序重复使用现有的连接&#xff0c;而不是每次都重新建立新的连接。此外&#xff0c;连接池会释放那些空闲时间超过最大限制的连接&#xff0c;从而避免因未及时释放连接而造…

FastAPI重载不生效?解决PyCharm中Uvicorn无法重载/重载缓慢的终极方法!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 重载缓慢 📒📝 问题概述🚨 相关原因📝 解决方案一📝 解决方案二📝 解决方案三📝 解决方案四⚓️ 相关链接 ⚓️📖 介绍 📖 在使用FastAPI开发时,reload=True 本应让你在修改代码后自动重启服务,提升开发效率…

CPU算法分析LiteAIServer视频智能分析平台未戴安全帽检测算法

随着人工智能技术的不断进步&#xff0c;CPU算法分析在视频智能分析平台中的应用日益广泛。特别是在工地安全管理领域&#xff0c;未戴安全帽检测算法已成为一项关键的安全保障措施。LiteAIServer视频智能分析平台通过结合CPU的高效运算能力和先进的深度学习算法&#xff0c;实…

两网站定时数据exchange项目详解

功能说明 A网站&#xff1a;用户可以通过表单输入嫌疑人信息&#xff0c;这些信息会被存储在内存中&#xff0c;并通过API接口返回。B网站&#xff1a;通过API接口接收从A网站同步过来的嫌疑人数据&#xff0c;并显示这些数据。主应用&#xff1a;使用APScheduler每隔1分钟从A…

【云计算】腾讯云架构高级工程师认证TCP--考纲例题,知识点总结

【云计算】腾讯云架构高级工程师认证TCCP–知识点总结&#xff0c;排版整理 文章目录 1、云计算架构概论1.1 五大版块知识点&#xff08;架构设计&#xff0c;基础服务&#xff0c;高阶技术&#xff0c;安全&#xff0c;上云&#xff09;1.2 课程详细目录1.3 云基础架构设计1.4…

sql server查看当前正在执行的sql

#统计某类sql执行次数&#xff0c;并按总体cpu消耗时间降序排序 with a as ( select er.session_id,db_name(er.database_id) as DBNAME,sy.last_batch AS 最后执行时间, er.cpu_time ,er.total_elapsed_time/1000 as sum_elapsed_time_s, CAST(csql.text AS varchar(8000)) A…

【UE5】Slider控件样式

实现根据滑柄位置确定滑条样式的功能&#xff0c;效果如下。 效果 步骤 1. 添加Slider控件和文本控件&#xff0c;其中文本控件用于显示滑条的值 2. 文本控件绑定变量&#xff0c;这里变量为“Year” 3. 当滑条的值变更后&#xff0c;设置“Year”的值&#xff0c;然后调用函…

JVM性能分析工具JProfiler的使用

一、基本概念 JProfiler&#xff1a;即“Java Profiler”&#xff0c;即“Java分析器”或“Java性能分析工具”。它是一款用于Java应用程序的性能分析和调试工具&#xff0c;主要帮助开发人员识别和解决性能瓶颈问题。 JVM&#xff1a;即“Java Virtual Machine”&#xff0c…

TongRDS 可视化连接

说明&#xff1a;TongRDS 增加了 redis 兼容接口&#xff0c;所以 redis 能连接的可视化方式&#xff0c;TongRDS 也是可以的 Redis Insight Redis Insight DataGrip DataGrip

【WPF】Prism学习(八)

Prism Dependency Injection 1.处理解析错误 1.1. 处理解析错误&#xff1a; 这个特性是在Prism 8中引入的&#xff0c;如果你的应用目标是早期版本&#xff0c;则不适用。 1.2. 异常发生的原因&#xff1a; 开发者可能会遇到多种原因导致的异常&#xff0c;常见的错误包括…

游戏引擎学习第19天

介绍 这段内容描述了开发者在进行游戏开发时&#xff0c;对于音频同步和平台层的理解和调整的过程。以下是更详细的复述&#xff1a; 开发者表达了他希望今天继续进行的工作内容。他提到&#xff0c;昨天他讲解了一些关于音频的内容&#xff0c;今天他想稍微深入讲解一下他正…

蓝队技能-应急响应篇Rookit后门进程提取网络发现隐藏技术Linux杀毒OpenArk

知识点&#xff1a; 1、应急响应-Windows-Rootkit-分析&清除 2、应急响应-Linux-Rootkit-分析&查毒&清除 内存马和rookit都是属于权限维持技术&#xff0c; 内存马一般是用来控制网站&#xff0c;rookit一般是用来控制服务器&#xff08;隐藏常规C2后门&#xff…

MAC创建一个自动操作,启动系统【睡眠】功能,并将绑定快捷键

目的 通过 Automator 创建一个服务来启动系统【睡眠】这个功能&#xff0c;并绑定快捷键。 步骤一&#xff1a;创建 Automator 服务 打开 Automator&#xff1a; ○ 在 Spotlight 中搜索 Automator&#xff0c;然后打开。选择服务类型&#xff1a; ○ 在 Automator 的启动界…

OpenLayers教程11_在OpenLayers中启用WebGL渲染

在 OpenLayers 中启用 WebGL 渲染&#xff1a;提高地图渲染性能的完整指南 目录 一、引言二、WebGL 渲染在 Web GIS 中的作用 WebGL 的优势WebGL 与 Canvas 渲染的区别 三、在 OpenLayers 中启用 WebGL 的方法四、代码实现步骤 1. 初始化地图和基本 WebGL 渲染2. 加载大规模点…

利用Matlab函数实现深度学习算法

深度学习是一种机器学习技术&#xff0c;其核心是构建多层神经网络&#xff0c;通过深入的学习来实现对数据的有效建模和分析。在深度学习的发展过程中&#xff0c;产生了许多算法和框架&#xff0c;Matlab是其中之一&#xff0c;提供了大量的深度学习函数&#xff0c;可以帮助…

每日OJ题_牛客_dd爱旋转_模拟_C++_Java

目录 牛客_dd爱旋转_模拟 题目解析 C代码 Java代码 牛客_dd爱旋转_模拟 dd爱旋转 输入描述&#xff1a; 第一行一个数n(1≤n≤1000)&#xff0c;表示矩阵大小 接下来n行&#xff0c;每行n个数&#xff0c;描述矩阵&#xff0c;其中数字范围为[1,2000] 一下来一行一个数q(1…

从零开始打造个人博客:我的网页设计之旅

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 ✨特色专栏&#xff1a…

【C语言】操作符2(含操作符的应用)

1、单目操作符 单目操作符有下面几种&#xff1a; &#xff01;、、--、&&#xff08;取地址&#xff09;、*&#xff08;指针&#xff09;、&#xff08;正号&#xff09;、-&#xff08;负号&#xff09;、~、sizeof、&#xff08;类型&#xff09; 其中就还有&和*操…

博客文章怎么设计分类与标签

首发地址&#xff08;欢迎大家访问&#xff09;&#xff1a;博客文章怎么设计分类与标签 新网站基本上算是迁移完了&#xff0c;迁移之后在写文章的过程中&#xff0c;发现个人的文章分类和标签做的太混乱了&#xff0c;分类做的像标签&#xff0c;标签也不是特别的丰富&#x…

【计算机网络】物理层

&#x1f3af; 导读&#xff1a;本文档概述了计算机网络物理层的基础知识&#xff0c;包括物理层的作用、四大任务、传输媒体分类及其特性&#xff0c;深入讲解了调制技术和编码方法如曼彻斯特编码等&#xff0c;探讨了信道的极限容量&#xff0c;介绍了奈氏准则和香农公式&…