UniAPP和Vue3生命周期hook

news/2025/1/14 21:37:09/

Uni-app 是一个使用 Vue.js 开发跨平台应用的框架,支持编译到多个平台(如 iOS、Android、H5、微信小程序等)。在 Uni-app 中,生命周期钩子(Lifecycle Hooks)用于在应用或页面的不同阶段执行特定的逻辑。理解和合理使用生命周期钩子,有助于优化应用的性能和用户体验。

一、应用(App)级生命周期钩子

这些钩子函数用于整个应用的生命周期管理,主要在 App.vue 文件中定义。

生命周期钩子触发时机说明
onLaunch应用初始化时触发,只会触发一次用于进行初始化操作,如获取全局数据、进行登录等
onShow应用启动,或从后台切回前台时触发适用于刷新数据或恢复应用状态
onHide应用切到后台时触发适用于保存应用状态、停止计时器等
onError应用发生脚本错误时触发用于错误日志收集和处理
onPageNotFound当打开的页面不存在时触发可以进行页面重定向或提示用户

示例:App.vue 中定义生命周期钩子

export default {onLaunch(options) {console.log('应用启动', options);// 初始化操作},onShow(options) {console.log('应用显示', options);// 恢复应用状态},onHide() {console.log('应用隐藏');// 保存应用状态},onError(error) {console.error('应用错误', error);// 错误处理},onPageNotFound(err) {console.warn('页面未找到', err);// 页面重定向}
}

二、页面级生命周期钩子

每个页面都有自己的生命周期钩子,用于管理页面在不同阶段的行为。这些钩子在页面的 .vue 文件中定义。

生命周期钩子触发时机说明
onLoad页面加载时触发接收路由参数,进行初始化
onShow页面显示时触发页面从后台或其他页面返回时调用
onReady页面初次渲染完成时触发适合进行与视图相关的操作
onHide页面隐藏时触发跳转到其他页面或应用进入后台
onUnload页面卸载时触发页面销毁前的清理操作
onPullDownRefresh用户下拉刷新时触发实现下拉刷新功能
onReachBottom页面滚动到底部时触发加载更多数据
onShareAppMessage用户点击分享时触发定制分享内容
onShareTimeline用户分享到朋友圈时触发定制分享到朋友圈的内容

示例:页面中的生命周期钩子

export default {data() {return {// 页面数据}},onLoad(options) {console.log('页面加载', options);// 初始化数据},onShow() {console.log('页面显示');// 刷新数据},onReady() {console.log('页面初次渲染完成');// 与视图相关的操作},onHide() {console.log('页面隐藏');// 保存页面状态},onUnload() {console.log('页面卸载');// 清理资源},onPullDownRefresh() {console.log('用户下拉刷新');// 刷新数据uni.stopPullDownRefresh(); // 停止下拉刷新},onReachBottom() {console.log('页面滚动到底部');// 加载更多数据},onShareAppMessage() {return {title: '分享标题',path: '/pages/home/home',imageUrl: '/static/share.png'};},onShareTimeline() {return {title: '分享到朋友圈的标题'};}
}

三、组件级生命周期钩子

在 Uni-app 中,组件也有自己的生命周期钩子,类似于 Vue.js 的生命周期钩子。这些钩子用于管理组件的创建、更新和销毁过程。

生命周期钩子触发时机说明
created组件实例创建后触发数据初始化等操作
mounted组件挂载到页面后触发DOM 操作等
updated组件数据更新后触发响应数据变化
destroyed组件销毁前触发清理资源

示例:组件中的生命周期钩子

export default {data() {return {// 组件数据}},created() {console.log('组件创建');// 初始化数据},mounted() {console.log('组件挂载');// 访问 DOM},updated() {console.log('组件更新');// 响应数据变化},destroyed() {console.log('组件销毁');// 清理定时器等资源}
}

四、注意事项

  1. 区分 App 和页面生命周期钩子:确保在正确的位置使用相应的生命周期钩子,如应用级钩子在 App.vue,页面级钩子在页面组件中。
  2. 异步操作:在生命周期钩子中进行异步操作(如网络请求)时,注意处理好回调和错误,避免阻塞页面渲染。
  3. 性能优化:合理利用生命周期钩子进行数据加载和资源管理,避免在频繁触发的钩子中执行重操作,如 onShowonHide

五、参考资料

  • Uni-app 官方文档 - 生命周期
  • Vue.js 官方文档 - 生命周期钩子

http://www.ppmy.cn/news/1563133.html

相关文章

【MySQL】SQL菜鸟教程(一)

1.常见命令 1.1 总览 命令作用SELECT从数据库中提取数据UPDATE更新数据库中的数据DELETE从数据库中删除数据INSERT INTO向数据库中插入新数据CREATE DATABASE创建新数据库ALTER DATABASE修改数据库CREATE TABLE创建新表ALTER TABLE变更数据表DROP TABLE删除表CREATE INDEX创建…

git相关操作笔记

git相关操作笔记 1. git init git init 是一个 Git 命令,用于初始化一个新的 Git 仓库。执行该命令后,Git 会在当前目录创建一个 .git 子目录,这是 Git 用来存储所有版本控制信息的地方。 使用方法如下: (1&#xff…

python-42-使用selenium-wire爬取微信公众号下的所有文章列表

文章目录 1 seleniumwire1.1 selenium-wire简介1.2 获取请求和响应信息2 操作2.1 自动获取token和cookie和agent2.3 获取所有清单3 异常解决3.1 请求url失败的问题3.2 访问链接不安全的问题4 参考附录1 seleniumwire Selenium WebDriver本身并不直接提供获取HTTP请求头(header…

C# OpenCV机器视觉:转速测量

在一个看似平常却又暗藏神秘能量的日子里,阿杰正在他那充满科技感的实验室里,对着一堆奇奇怪怪的仪器发呆。突然,手机铃声如一道凌厉的剑气划破寂静,原来是工厂的赵厂长打来的紧急电话:“阿杰啊,咱们工厂新…

【Uniapp-Vue3】组合式API中的组件的生命周期函数(钩子函数)

在Uniapp中生命周期函数用得较多的是onMounted和onUnmounted。 一、onMounted函数 如果我们想要获得DOM元素,就需要给DOM标签上添加ref属性,并定义一个相同属性名的变量。 但是我们输出这个DOM元素为NULL 如果我们使用onMounted就能获得到DOM元素&…

excel设置好的可选择列数据后,如何快速输入到单元格中?

当设置好列的【数据】-【数据有效性】-【序列】后,在单元格中输入可选择数据的开头,就会提示出对应的可选择数据,然后,按一下键盘上的【↓】键,再按回车,即可快速输入到单元格中。

CSS语言的编程范式

CSS语言的编程范式 引言 在现代网页开发中,CSS(层叠样式表)作为一种样式语言,承担着网站前端呈现的重要角色。无论是简单的静态网页还是复杂的单页应用,CSS都在人机交互中发挥着至关重要的作用。掩盖在美观背后的&am…

初识C++(二)

六、引用 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 通俗地讲,可以理解为一个人能够拥有多个称呼,这些所有的称呼都是表示这一…