当前位置:首页 > uni-app

uniapp事件介绍

2026-02-05 21:50:36uni-app

uniapp事件概述

在uniapp中,事件是组件间通信的重要机制,允许子组件向父组件传递数据或触发行为。事件通过v-on@指令绑定,支持原生DOM事件和自定义事件。

uniapp事件介绍

事件绑定语法

  • 原生DOM事件:直接绑定到DOM元素,如点击事件。
    <button @click="handleClick">点击</button>
  • 自定义事件:通过$emit触发,父组件监听。
    <!-- 子组件触发 -->
    <button @click="$emit('customEvent', data)">触发事件</button>
    <!-- 父组件监听 -->
    <child-component @customEvent="handleCustomEvent"></child-component>

事件修饰符

uniapp支持Vue的事件修饰符,简化事件处理逻辑:

uniapp事件介绍

  • .stop:阻止事件冒泡。
  • .prevent:阻止默认行为。
  • .capture:使用捕获模式。
  • .self:仅当事件从元素本身触发时回调。
  • .once:事件只触发一次。
    <button @click.stop="handleClick">阻止冒泡</button>

事件传参

通过$emit传递参数,父组件在方法中接收:

<!-- 子组件 -->
<button @click="$emit('submit', { id: 1, name: 'uniapp' })">提交</button>
<!-- 父组件 -->
<child-component @submit="handleSubmit"></child-component>
methods: {
  handleSubmit(data) {
    console.log(data); // { id: 1, name: 'uniapp' }
  }
}

跨组件事件通信

对于非父子组件通信,可使用uni.$emituni.$on全局事件机制:

// 发送事件  
uni.$emit('globalEvent', { message: '全局事件' });  
// 监听事件  
uni.$on('globalEvent', (data) => {  
  console.log(data.message); // '全局事件'  
});  

注意事项

  • 避免滥用全局事件,防止内存泄漏。组件销毁时需调用uni.$off移除监听。
  • 自定义事件名建议使用kebab-case(如custom-event),避免与原生事件冲突。
  • 小程序端部分原生事件(如inputtap)需使用特定语法,需参考平台文档。

标签: 事件uniapp
分享给朋友:

相关文章

vue实现自定义事件

vue实现自定义事件

Vue 自定义事件实现方法 在 Vue 中,自定义事件是通过 $emit 方法触发的,父组件通过 v-on 或 @ 监听子组件触发的事件。以下是几种常见的实现方式: 子组件触发事件 在子组件中,使…

uniapp教程

uniapp教程

uniapp 基础介绍 uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布(如微信小程序、H5、App、快应用等)。其核心优势在于代码复用率高,学习成本低,适合快速构建多…

jquery事件

jquery事件

jQuery 事件基础 jQuery 提供了一套简化的事件处理机制,允许开发者通过简洁的语法绑定、触发和管理事件。核心方法包括 on()、off()、trigger() 等,支持常见事件(如点击、悬停…

jquery点击事件

jquery点击事件

jQuery 点击事件基础用法 使用 jQuery 绑定点击事件主要通过 .click() 方法或 .on() 方法实现。以下示例展示如何为按钮添加点击事件: // 方法1: 使用 .click()…

uniapp部署到服务器

uniapp部署到服务器

部署准备 确保本地开发环境已完成项目构建,生成静态文件(H5端为/dist/build/h5目录)。检查服务器环境是否安装Nginx/Apache等Web服务软件,并配置好域名解析。 上传文件 通过…

uniapp实名认证

uniapp实名认证

uniapp实名认证实现方法 使用uniCloud实名认证插件 uniapp官方提供了uniCloud的实名认证插件,可快速集成到项目中。插件支持身份证识别、活体检测等功能,需在uniCloud控制台…