news 2026/8/24 13:58:18

十一、uni-app中的事件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
十一、uni-app中的事件

一、 基础交互与手势事件

在 uni-app 移动端开发中,手势事件是最基础的交互能力,常见于按钮点击、列表操作、长按菜单以及拖拽等场景。

事件名称触发时机实际开发场景
@tap手指触摸后马上离开按钮点击、列表项跳转、弹窗关闭(强烈建议替代@click
@longpress手指触摸屏幕超过 350ms 后触发长按图片保存、长按消息弹出“删除/复制”菜单
@touchstart手指刚接触屏幕时触发记录拖拽元素的初始坐标
@touchmove手指在屏幕上持续滑动时触发配合touchstart实现拖拽跟手、滑动抽屉菜单
@touchend手指离开屏幕时触发拖拽结束后的位置吸附、判断左滑/右滑操作

二、表单与输入事件

当页面中存在<input><textarea><picker>等表单组件时,需要用到以下事件。

事件名称触发时机实际开发场景
@input输入框内容发生变化时实时触发搜索框的实时联想词提示、输入框右下角的字数统计
@confirm点击软键盘右下角按钮(如“搜索/完成”)时触发用户在搜索框输入关键词后,点击键盘上的“搜索”键执行查询
@change表单组件的值发生改变且用户确认时触发切换开关(switch)、选择日期(picker)后更新页面数据
@focus输入框获取焦点(键盘弹起)时触发解决键盘弹起时遮挡底部输入框或按钮的问题
@blur输入框失去焦点(键盘收起)时触发用户输入完毕后,对填写的手机号进行格式校验
@submit表单提交时触发点击提交按钮,收集所有表单数据并发送给后端接口

三、滚动与视图事件

主要用于处理长列表、轮播图等需要监听滚动状态的组件(如<scroll-view><swiper>)。

事件名称触发时机实际开发场景
@scroll滚动视图滚动时触发监听滚动距离,实现“回到顶部”按钮的显示与隐藏
@scrolltolower滚动到底部/右边时触发核心场景:实现列表的下拉加载更多(分页请求)
@scrolltoupper滚动到顶部/左边时触发实现滚动到顶部时的特殊提示或刷新
@load媒体资源(如 image)加载完成时触发图片加载完成前显示骨架屏或 loading 动画
@error媒体资源加载失败时触发图片加载失败时,替换为默认的“加载失败”占位图

四、全局事件总线(跨页面/跨组件通信)

当两个页面或组件之间没有直接的父子关系,但需要互相传递数据时,使用 uni-app 提供的全局事件 API。

API 方法作用实际开发场景
uni.$on(eventName, callback)订阅(监听)一个全局事件在首页onLoad时注册监听,等待其他页面发来通知
uni.$emit(eventName, data)发布(触发)一个全局事件登录页登录成功后,触发事件并携带用户信息,通知首页更新
uni.$off(eventName, callback)取消订阅(移除监听)⚠️ 必做:在onUnloadbeforeDestroy中移除监听,防止内存泄漏
uni.$once(eventName, callback)只监听一次全局事件触发一次后自动移除监听,适用于只需执行一次的初始化逻辑

五、实战避坑指南

  • 统一使用@tap:在小程序端,@click可能会有 300ms 的点击延迟,强烈建议全项目统一使用@tap替代@click
  • 全局事件必须成对出现:使用了uni.$on,就必须在页面销毁时(onUnload)使用uni.$off移除它。如果不移除,每次进入页面都会叠加一次监听,导致一次触发执行多次回调,引发严重的 Bug。
  • 事件名命名规范:全局事件名建议使用全小写加中划线(如login-success),千万不要以uni.开头,以免与框架内部系统事件冲突。
  • 获取事件参数:在 Vue3 中,处理事件时记得通过e.detail获取数据。例如输入框的值是e.detail.value,而不是e.target.value
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 13:51:24

OpenClaw最新版本地安装部署教程,TopClaw三分钟开箱即用

为什么我建议你试试本地版OpenClaw 最近很多朋友在讨论OpenClaw&#xff0c;这个开源项目确实火得不行。我之前一直用在线服务&#xff0c;但网络不稳定的时候真的很抓狂&#xff0c;而且数据安全总让人不放心。后来我决定折腾一下本地部署&#xff0c;没想到比想象中简单得多。…

作者头像 李华
网站建设 2026/8/24 13:50:19

记一次关于AI在数仓中的应用

一、工具&#xff1a;AI – Cline、VS code和MCP 1.1 首先在VS code上安装插件Cline &#xff0c;然后安装MCP服务&#xff0c;连接doris。 1.2 在doris中建立ods表、dwd、dws和ads表。你也可以将所有表的字段写好&#xff0c;让cline去帮建表。 我的建立好了。总共13张表。1.3…

作者头像 李华
网站建设 2026/8/24 13:49:51

工程量计算稿软件(版)含详细安装教程与操作指南

温馨提示&#xff1a;文末有联系方式 软件核心价值&#xff1a;专为工程造价人员打造的智能计算底稿工具 本工程量计算稿软件深度适配建设工程造价业务场景&#xff0c;完整复刻传统手工计算底稿的操作逻辑与呈现形式&#xff0c;让造价工程师无需改变工作习惯即可快速上手。 系…

作者头像 李华
网站建设 2026/8/24 13:49:48

车企自动泊车技术全解|纯视觉/多传感器融合双路线、端到端大模型革新 助力机械车位/无划线车位/极窄车位精准泊车落地

目录 摘要 一、引言:自动泊车普及背后的技术分层与行业痛点 二、硬件层核心拆解:纯视觉与多传感器融合路线深度对比 2.1 纯视觉泊车方案(特斯拉全系车型) 2.2 多传感器融合方案(华为、小鹏、蔚来、比亚迪、理想) 三、算法层架构迭代:从规则模块化到端到端大模型革…

作者头像 李华
网站建设 2026/8/24 13:48:16

Ansible playbook管理

loop循环创建用户并设置密码&#xff0c;密码以变量的方式[devopsserver1 ansible]$ vim user.yml--- - hosts: dbvars_files:- userlist.ymltasks:- name: Add the usersansible.builtin.user:name: "{{ item.user }}"password: "{{ item.pass | password_hash…

作者头像 李华