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

Vue 3 中 onUnload 和 onPageScroll 使用详解

Vue 3 中 onUnload 和 onPageScroll 使用详解

在 Vue 3 中,当我们开发微信小程序时,通常需要处理页面生命周期事件和页面滚动事件,比如页面卸载 (onUnload) 和页面滚动 (onPageScroll) 等。这些功能对优化用户体验、实现动态效果以及处理页面状态管理至关重要。

本文将详细介绍如何在 Vue 3 中使用 onUnloadonPageScroll,包括语法糖的使用方式,并附加完整代码示例。


onUnload 生命周期事件

作用

onUnload 是微信小程序的页面生命周期事件,触发时机是页面卸载(离开当前页面,或者关闭页面)时。常见的应用场景包括:

  • 清理页面数据。
  • 停止未完成的请求。
  • 释放内存占用资源(如定时器、监听器等)。

使用方式

步骤
  1. Vue 3 的 onUnload 事件可以通过组合式 API 的 onUnmounted 来实现。
  2. 如果在特定页面中处理 onUnload,需要结合小程序的 PageComponent 的生命周期绑定事件。
代码示例

以下示例展示如何在 onUnload 中清理定时器:

<template>
  <view class="container">
    <text>{{ message }}</text>
  </view>
</template>

<script setup>
import { ref, onUnmounted } from 'vue';

const message = ref('正在加载数据...');
let timer;

function startTimer() {
  timer = setInterval(() => {
    console.log('计时器运行中...');
  }, 1000);
}

// 页面卸载时清理定时器
onUnmounted(() => {
  console.log('页面卸载,清理定时器');
  if (timer) {
    clearInterval(timer);
  }
});

// 初始化逻辑
startTimer();
</script>

<style scoped>
.container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}
</style>

onPageScroll 页面滚动事件

作用

onPageScroll 是微信小程序提供的页面滚动事件,触发时机为用户滚动页面时。常见的应用场景包括:

  • 实现滚动加载(如无限滚动)。
  • 根据滚动位置改变 UI(如动态导航栏)。
  • 滚动动画效果。

使用方式

步骤
  1. 在 Vue 3 中,通过 onPageScroll 钩子捕获滚动事件。
  2. onPageScroll 提供滚动位置信息,通过 scrollTop 获取滚动距离。
代码示例

以下示例实现滚动动态导航栏效果:

<template>
  <view class="page">
    <view :class="['navbar', { sticky: isSticky }]">导航栏</view>
    <scroll-view scroll-y="true" class="content">
      <view v-for="item in 50" :key="item" class="item">内容 {{ item }}</view>
    </scroll-view>
  </view>
</template>

<script setup>
import { ref, onMounted, onUnmounted } from 'vue';

const isSticky = ref(false);

// 监听滚动事件
function handleScroll({ scrollTop }) {
  isSticky.value = scrollTop > 100; // 滚动超过 100px 时固定导航栏
}

// 注册滚动事件
onMounted(() => {
  wx.onPageScroll(handleScroll);
});

// 卸载时移除滚动事件
onUnmounted(() => {
  wx.offPageScroll(handleScroll);
});
</script>

<style scoped>
.page {
  height: 100vh;
  overflow: hidden;
}
.navbar {
  width: 100%;
  height: 50px;
  line-height: 50px;
  text-align: center;
  background-color: #eee;
  transition: all 0.3s;
}
.navbar.sticky {
  background-color: #333;
  color: #fff;
}
.content {
  height: calc(100vh - 50px);
  overflow-y: scroll;
}
.item {
  height: 50px;
  line-height: 50px;
  text-align: center;
  border-bottom: 1px solid #ddd;
}
</style>

更多相关知识点

Vue 3 小程序支持的常见生命周期

除了 onUnloadonPageScroll,小程序开发中常用的生命周期事件包括:

  • onLoad: 页面加载时触发。
  • onShow: 页面显示时触发。
  • onHide: 页面隐藏时触发。
  • onReady: 页面初次渲染完成时触发。

事件绑定的注意事项

  1. 性能优化
    对于频繁触发的事件(如 onPageScroll),建议对事件进行节流或防抖处理。
  2. 清理资源
    onUnload 或其他生命周期结束时,应清理占用的资源(如事件监听器、定时器等),以避免内存泄漏。

总结

通过本文的学习,我们了解了如何在 Vue 3 开发的微信小程序中使用 onUnloadonPageScroll,并掌握了相关的注意事项和优化技巧。结合语法糖形式,可以让代码更加清晰简洁。


http://www.kler.cn/a/407541.html

相关文章:

  • Oracle 19c Rac + ADG搭建(源库:RAC,目标库FS)
  • ACP科普:约翰·科特变更
  • 无监督跨域目标检测的语义一致性知识转移
  • PVE的优化与温度监控(二)—无法识别移动硬盘S.M.A.R.T信息的思考并解决
  • 7天掌握SQL - 第一天:数据库基础与SQL入门
  • shell--第一次作业
  • 一文学习开源框架OkHttp
  • Vue3 + Vite + Electron + TS 项目构建
  • FPGA经验谈系列文章——6、常用代码的逻辑级数预估(条件语句)
  • 万物皆可Docker,在NAS上一键部署最新苹果MacOS 15系统
  • IDEA2023 SpringBoot整合MyBatis(三)
  • LeetCode 力扣 热题 100道(八)相交链表(C++)
  • DB2 import/export data
  • 苹果系统中利用活动监视器来终止进程
  • MYSQL- 查看存储过程调式信息语句(二十七)
  • 【AI系统】核心计算之矩阵乘
  • 安装支持ssl的harbor 2.1.4 docker 19.03.8 docker-compose 1.24.0
  • 百度主动推送可以提升抓取,它能提升索引量吗?
  • Python入门(14)--数据分析基础
  • 删除链表中倒数第N和节点
  • 【LLM】一文学会SPPO
  • 数字孪生赋能智慧校园:构建全方位校园安全保障新体系
  • 漫步北京小程序+气象景观数字化服务平台,让气象景观触手可及
  • 自制游戏:监狱逃亡
  • 【Linux】僵尸进程、进程状态简介
  • 升级鸿蒙NEXT后,你的手机相机发生了这些变化……