uniapp中常用的事件处理方法详解

 更新时间:2023年12月28日 10:46:34   作者:许多仙  
在UniApp中事件处理非常重要,通过事件处理可以实现用户与应用程序之间的交互,这篇文章主要给大家介绍了关于uniapp中常用的事件处理方法的相关资料,需要的朋友可以参考下

前言

UniApp 是一个跨平台的开发框架,支持多种前端框架(Vue、React、Angular 等),并能打包成多种运行平台(H5、小程序、App 等)。在 UniApp 中,事件处理非常重要,通过事件处理可以实现用户与应用程序之间的交互。下面是 UniApp 中常用的事件处理方式:

1. 绑定事件

在模板中可以通过 @ 符号绑定事件,例如:

<button @click="handleClick">点击我</button>

这里绑定了一个 click 事件,并且绑定的函数是 handleClick。

2. 事件修饰符

事件修饰符是指在绑定事件时使用的一些特殊符号,用于修改事件的行为。常见的事件修饰符包括:

  • prevent:阻止默认行为
  • stop:阻止事件冒泡
  • capture:使用事件捕获模式
  • self:只有当事件是从事件源本身触发时才触发回调函数
  • once:只触发一次回调函数
  • passive:提高页面滚动的流畅度

例如:

<!-- 阻止默认行为 -->
<button @click.prevent="handleClick">点击我</button>

<!-- 阻止事件冒泡 -->
<button @click.stop="handleClick">点击我</button>

<!-- 使用事件捕获模式 -->
<button @click.capture="handleClick">点击我</button>

<!-- 只有当事件是从事件源本身触发时才触发回调函数 -->
<button @click.self="handleClick">点击我</button>

<!-- 只触发一次回调函数 -->
<button @click.once="handleClick">点击我</button>

<!-- 提高页面滚动的流畅度 -->
<button @click.passive="handleClick">点击我</button>

.prevent 和 .stop 是两种不同的事件修饰符,虽然它们有一些相似之处,但是在事件处理中有不同的作用。

1 .prevent 用于阻止事件的默认行为,例如阻止 <a> 标签的默认跳转、阻止表单的默认提交等。
如果一个事件被 .prevent 修饰符修饰了,则在事件触发时,不会执行事件的默认行为,而只会执行`绑定的事件处理函数`。

2 .stop 用于阻止事件的冒泡传播,事件冒泡是指当一个元素触发事件时,该事件会向父级元素传播。
如果一个事件被 .stop 修饰符修饰了,则在事件触发时,不会向上层元素传播该事件,而只会在当前元素内部进行处理。

因此,.prevent 和 .stop 的作用是不同的,但是它们都能够阻止事件的默认行为。
.prevent 用于阻止元素的默认行为,.stop 用于阻止事件的冒泡传播。 

具体示例:

当一个链接被点击时,会触发 click 事件。如果链接没有设置 href 属性,则默认的行为是不进行跳转,

但如果设置了 href 属性,则会跳转到 href 指定的页面。
在这种情况下,可以使用 .prevent 和 .stop 修饰符来阻止链接的默认跳转行为和冒泡传播。


我们给链接设置了 href 属性,并绑定了 click 事件和 handleLinkClick 方法。
同时,我们在链接上使用了 .prevent 和 .stop 修饰符来阻止默认的跳转行为和冒泡传播。
<template>
  <div @click="handleDivClick">//上层点击事件。用了检测下面的点击事件有没有冒泡上来
    <a href="https://www.example.com" rel="external nofollow"  @click.prevent.stop="handleLinkClick">点击我</a>
  </div>
</template>

<script>
export default {
  methods: {
    handleLinkClick() {
      console.log('内部事件————链接被点击了');
    },
    handleDivClick() {
      console.log('外部事件————div 被点击了');
    }
  }
};
</script>
在点击链接时,控制台会输出 【内部事件————链接被点击了】
链接被点击了,而不会进行跳转。
同时,由于使用了 .stop 修饰符,事件也不会向上层元素冒泡传播,因此点击链接时不会触发外部事件 handleDivClick 方法。

1、如果我们把 .prevent 修饰符去掉,点击链接时会进行跳转。说明默认行为存在,但是被阻止了。

2、如果把 .stop 修饰符去掉,点击链接时会触发 handleDivClick 方法。说明点击事件冒泡了。

这说明了 .prevent 和 .stop 修饰符的区别,.prevent 可以阻止默认行为,.stop 可以阻止冒泡传播。

默认行为指的是元素在触发某些事件时,浏览器会执行的预设行为。
例如,当用户点击一个链接时,浏览器默认会跳转到该链接所指定的 URL。当用户提交一个表单时,浏览器默认会向服务器发送表单数据并刷新页面。
这些行为是浏览器内置的,可以通过 JavaScript 代码来阻止或修改。

3. 内置事件

在 UniApp 中,还有一些内置事件可以使用。这些事件是指在特定情况下自动触发的事件,例如:

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

这些事件可以在页面或组件中使用,例如:

export default {
  onLoad() {
    console.log('页面加载完成');
  },
  onReady() {
    console.log('页面初次渲染完成');
  },
  onShow() {
    console.log('页面展示');
  },
  onHide() {
    console.log('页面隐藏');
  },
  onUnload() {
    console.log('页面卸载');
  }
}

4. 自定义事件

在 UniApp 中,还可以通过 uni. e m i t 和 u n i . emit 和 uni. emit和uni.on 方法来实现自定义事件的处理。例如:

// 发送自定义事件
uni.$emit('myEvent', {data: '自定义事件参数'});

// 监听自定义事件
uni.$on('myEvent', (data) => {
  console.log('接收到自定义事件', data);
});
这里通过 uni.$emit 发送了一个名为 myEvent 的自定义事件,
并传递了一个参数 {data: '自定义事件参数'}。在需要监听该事件的地方,
可以使用 uni.$on 方法来监听该事件,并在回调函数中处理事件。

5. 事件对象

在事件处理函数中,可以通过 $event 参数来获取事件对象,事件对象包含了事件的一些信息,例如:

  • type:事件类型
  • target:事件源
  • currentTarget:当前组件
  • detail:自定义数据

例如:

<button @click="handleClick">点击我</button>

methods: {
  handleClick($event) {
    console.log('事件类型', $event.type);
    console.log('事件源', $event.target);
    console.log('当前组件', $event.currentTarget);
    console.log('自定义数据', $event.detail);
  }
}

以上就是 UniApp 中常用的事件处理方式,包括绑定事件、事件修饰符、内置事件、自定义事件和事件对象。

掌握这些知识,可以更加灵活地处理事件,实现丰富的用户交互效果。 

总结

到此这篇关于uniapp中常用的事件处理方法的文章就介绍到这了,更多相关uniapp事件处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • weUI应用之JS常用信息提示弹层的封装

    weUI应用之JS常用信息提示弹层的封装

    这篇文章主要为大家详细介绍了weUI应用中利用JS封装几个常用的信息提示弹层的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 微信小程序自定义可滑动日历界面

    微信小程序自定义可滑动日历界面

    这篇文章主要为大家详细介绍了微信小程序自定义可滑动日历界面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • JavaScript学习笔记之数组求和方法

    JavaScript学习笔记之数组求和方法

    这篇文章主要介绍了JavaScript学习笔记之数组求和方法的相关资料,需要的朋友可以参考下
    2016-03-03
  • javascript包装对象实例分析

    javascript包装对象实例分析

    这篇文章主要介绍了javascript包装对象,实例分析分析了javascript对象操作的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • DOM3中的js textInput文本事件

    DOM3中的js textInput文本事件

    DOM3中引入了文本事件,其中之一 textInput 。当用户再可编辑区域输入字符时触发该事件。
    2011-04-04
  • 高德地图JS-SDK实现详细教程(定位、地图选点、地址解析等)

    高德地图JS-SDK实现详细教程(定位、地图选点、地址解析等)

    在移动应用开发中,地图服务是不可或缺的组件之一,尤其在构建位置相关功能时,这篇文章主要介绍了高德地图JS-SDK实现的相关资料,包括定位、地图选点、地址解析等,需要的朋友可以参考下
    2025-07-07
  • JavaScript中神奇的call()方法

    JavaScript中神奇的call()方法

    这篇文章主要介绍了JavaScript中神奇的call()方法,本文用浅显的语言帮助你加深理解call()方法,需要的朋友可以参考下
    2015-03-03
  • Vue3基于countUp.js实现数字滚动的插件

    Vue3基于countUp.js实现数字滚动的插件

    本文主要介绍了Vue3基于countUp.js实现数字滚动的插件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 常规常用的JavaScript加密解密实例demo

    常规常用的JavaScript加密解密实例demo

    这篇文章主要给大家介绍了关于常规常用的JavaScript加密解密的相关资料,文中通过示例讲解了对称加密AES、非对称加密RSA、哈希SHA-256、消息认证HMAC、编码Base64、密码存储bcrypt及代码保护,适用于数据加密、安全传输、密码存储等不同场景,需要的朋友可以参考下
    2025-05-05
  • 使用JavaScript实现随机颜色生成器

    使用JavaScript实现随机颜色生成器

    这篇文章主要为大家详细介绍了如何使用JavaScript+CSS实现一个随机颜色生成器,文中的示例代码讲解详细,感兴趣的小伙伴可以动手尝试一下
    2022-08-08

最新评论