《微信小程序-基础篇》小程序中的事件与冒泡

这篇具有很好参考价值的文章主要介绍了《微信小程序-基础篇》小程序中的事件与冒泡。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,这是小程序系列的第八篇文章,这应该是基础篇的最后几篇文章了,下面就是要开始分享一些组件的具体设计与实现,为后面的项目实战做准备了:
1.《微信小程序-基础篇》带你了解小程序的路由系统(二)
2.《微信小程序-基础篇》带你了解小程序中的生命周期(一)
3.《微信小程序-基础篇》带你了解小程序中的生命周期(二)
这一篇文章分享的是关于小程序中事件相关的内容,介绍完基础以后会实际同步开发一个微信小程序的项目并开源,项目的主题暂定是原神的资料站~~~
——
最后,求关注,求收藏,求点赞,这是一个系列文章,建议专栏收藏,肯定分享的都是跟小程序相关的,旨在能提高在小程序中的能力,谢谢~
——
无锡又有疫情了,希望早日过去,加油~

前言

小程序中的 事件机制和Vue2中的用法大同小异,因此,如果你了解Vue的话那本章节几乎没有任何难度,我们知道,在前端领域中一般都会说HTML是骨架CSS是装饰,而 JavaScript则是用来执行交互,小程序中同样如此,它的 事件机制与语法其实是完全遵循JavaScript的,下面我们就开始一一分享;
耐心看完,你一定有所收获~~

阅读对象与难度

本文难度属于:初级,适合 初学小程序的开发者,通过本文,你可以了解到 小程序中的事件是什么,如何 执行事件 以及 当事件冒泡时有什么具体应用 ,大致思维导图如下:
《微信小程序-基础篇》小程序中的事件与冒泡

什么是事件

首先,我们先来聊一下 什么是事件,其实之前有的文章中我们已经有点说到了,我们来看一下官方的说明吧,下面这段介绍来自于Mozilla,地址如下:事件介绍

事件是您在编程时系统内发生的动作或者发生的事情,系统响应事件后,如果需要,您可以某种方式对事件做出回应。例如:如果用户在网页上单击一个按钮,您可能想通过显示一个信息框来响应这个动作。

简单的说,一个事件就是一个操作,这个操作可以是用户触发的,也可以是系统自动触发,比如点击一个按钮,这个 点击 可以视为一个操作也就是一个事件,比如我们小程序广告业上的倒计时,倒计时结束后自动跳转到首页,这个 跳转可以视为一个操作倒计时也可以视为一个操作 ,和点击操作不同的是,这个操作是系统自动完成的,期间不需要用户参与,它自己就可以执行;
看到这里,相信你对什么是事件应该有点明白了吧~看了个例子吧,点击按钮后跳转页面到日志页
《微信小程序-基础篇》小程序中的事件与冒泡

事件

事件不被捕获,那么事件就没有任何意义,什么意思呢?比如按钮上存在一个点击事件,但是当用户点击了这个按钮后小程序怎么知道你点了?所以这个就需要一个捕获机制,在小程序中事件捕获一共有三种种,分别对应的关键词为:bindcatch,以及2.8.2后新出的 mut-bind

基本使用规则

使用方法还是比较简单的,就是使用:关键词+冒号+事件名组合,比如bind:tap,实际例子如下

<t-button bind:tap="handleClick">点击跳转到日志页</t-button>

这里的 bind 就是上面捕获的其中一个关键词,后面的tap是事件名字,在小程序中 tap代表的是点击事件,约等于web中的click事件bind:tap 连起来就是要小程序系统来捕获这个button上的点击事件,后面的handleClick则是回调函数,意思是一旦捕获到点击事件,就会执行handleClick这个回调函数,如果我们在回调函数中写上跳转,那么当触发点击事件后会执行跳转,如果想要了解路由跳转,可以查看博主的另外一篇文章《《微信小程序-基础篇》带你了解小程序的路由系统(一)》

// pages/welcome.ts
Page({
  handleClick(){
    wx.redirectTo({
      url: '../logs/logs'
    })
  },
})

关键词

上面说到捕获事件的关键词一共有三个,分别是:bindcatch 以及 mut-bind,用法规则是一摸一样的,如下示例

<!-- bind的用法 -->
<t-button bind:tap="handleClick">点击跳转到日志页</t-button>

<!-- catch的用法 -->
<t-button catch:tap="handleClick">点击跳转到日志页</t-button>

<!-- mut-bind的用法 -->
<t-button mut-bind:tap="handleClick">点击跳转到日志页</t-button>

如果还不大清楚的话,看截图,如下:
《微信小程序-基础篇》小程序中的事件与冒泡

bind和catch的区别

可能会有小伙伴问为什么没有mut-bind,怎么说呢,实际上bindcatch是一对,而mut-bind是因为小程序官方为了解决某些问题而推出的一种新的机制,这个机制我们下面在说,这里先比对bind和catch;
bind和catch最大的区别只有一个,那就是冒泡bind绑定的事件会向上冒泡,catch绑定的事件则不会,它会阻止冒泡,可能有小伙伴不大明白冒泡,这里简单说一下吧

冒泡

首先说明,这是一种 存在于window中的一种机制,它像是在水中的气泡会向上浮一样,看个图例
《微信小程序-基础篇》小程序中的事件与冒泡
现在假设DOM的结构有这么几层,并且都绑定了点击事件,那么如果点击view,由于冒泡的规则bodyhtmldocument上绑定的同时会被触发,实际看下代码的演示吧

<!--pages/welcome.wxml-->
<view bind:tap="bindEvent1">
  <view bind:tap="bindEvent2">
    <view bind:tap="bindEvent3">测试冒泡事件</view>
  </view>
</view>
// pages/welcome.ts
Page({
  bindEvent1(){
    console.log("----- 最外层的事件 -----")
  },
  bindEvent2(){
    console.log("----- 中间层的事件 -----")
  },
  bindEvent3(){
    console.log("----- 最里层的事件 -----")
  },
})

以这段代码为例,如果 点击“测试冒泡事件”的文字 ,哪个打印会生效,按理说点击了最里面那个,那么只会打印:最里层的事件,这个文字,看下结果吧
《微信小程序-基础篇》小程序中的事件与冒泡

实际结果是三个都被打印了,这也就代表了实际上这三个函数都被触发了,这个就是冒泡,现在能又点明白了吧,冒泡的意思就是说他能将事件一层一层往上触发,那么能不能阻止这个冒泡呢,那肯定是可以的
只要使用catch作为关键词,那么冒泡就会被中止,不再往上层传递,修改一下示例代码

<!--pages/welcome.wxml-->
<view bind:tap="bindEvent1">
  <view catch:tap="bindEvent2">
    <view bind:tap="bindEvent3">测试冒泡事件</view>
  </view>
</view>

如果改成这样,那么会打印几个结果,猜测一下:由于将中间层的关键词改成了catch,那么最外层肯定就不会被触发了,最里层肯定是会被触发的,就是不确定中间层会不会被触发,测试一下
《微信小程序-基础篇》小程序中的事件与冒泡

答案是:会触发,中间层被触发后由于catch的原因会将冒泡阻止,使之不再往上传递;

mut-bind互斥事件

现在我们再来说下mut-bind,它是自2.8.2版本后,微信官方在基础库中新加入的一个绑定规则,叫做 互斥事件,其实挺好理解的,就是不管嵌套多少层,在冒泡体系中只有最近一个mut-bind事件会被触发,看个例子

<view id="outer" mut-bind:tap="handleTap1">
  outer view
  <view id="middle" bind:tap="handleTap2">
    middle view
    <view id="inner" mut-bind:tap="handleTap3">
      inner view
    </view>
  </view>
</view>

按照定义的说法,如果 点击inner view,那么只会打印最里层和中间层的日志,最外层的由于mut-bind只触发一个,会被过滤掉,我们实验一下
《微信小程序-基础篇》小程序中的事件与冒泡

没毛病,符合预期~

事件列表

如同上一节的 点击事件tap,小程序官方提供了很多事件,具体的可以查看小程序官方网站的说明,地址如下:普通事件绑定,其中有几个还是比较重要的,单独列一下

事件名 说明
touchstart 手指触摸动作开始触发回调函数
touchmove 手指触摸后移动,也就是说手指移动触发回调函数
touchcancel 手指触摸动作被打断,如来电提醒,弹窗
touchend 手指触摸动作结束
tap 手指触摸后马上离开,就是约等于web端的点击事件
longtap 手指触摸后,超过350ms再离开(推荐使用 longpress 事件代替),简单的说就是长按事件
longpress 手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发

小结

在本文中,我们了解了什么是事件,以及与事件对于的几个捕获机制,bindcatch以及mut-bind,机制与事件名之间的使用规则是,关键词:事件名,比如bind:tap,这代表绑定了一个tap事件;
bind、catch最大的区别是bind支持冒泡,catch会阻止冒泡,而mut-bind这是小程序官方在2.8.2新加入的一个互斥事件,它代表在整理 冒泡的链路里只会触发一次文章来源地址https://www.toymoban.com/news/detail-484168.html

到了这里,关于《微信小程序-基础篇》小程序中的事件与冒泡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp微信小程序中阻止事件冒泡

    开发场景:列表中展示地块的数据信息,用户可以点击列表进入地块的详情界面,也可以点击列表中的星星按钮进行收藏 遇到的问题:每次点击星星的时候,都会触发父级的点击事件,从而进入到详情界面 原本的代码: 我原本想到可以使用 @click.stop 用来阻止时间冒泡,但是

    2024年02月02日
    浏览(48)
  • 【小程序教程】微信小程序的事件处理和交互逻辑(tap logpress touchmove input submint事件&冒泡与捕捉最详细讲解)

    为什么要学习事件处理和交互逻辑? 事件处理和交互逻辑在小程序开发中扮演着至关重要的角色。以下是几个原因: 提升用户体验:良好的事件处理和交互逻辑可以使小程序更加易用和友好,提升用户体验。通过合理设置事件触发条件和交互效果,可以使用户操作更加顺畅

    2024年02月04日
    浏览(54)
  • 微信小程序中的 广播监听事件

    定义 WxNotificationCenter.js  文件;  在需要的页面js中引入该文件

    2024年02月10日
    浏览(33)
  • uniapp开发微信小程序阻止事件冒泡

        最近在使用uniapp去开发微信小程序     其中不乏遇到一些问题,我都会发出来。     万一自己别的时候忘记,但是需要用了。   uniapp中开发微信小程序,当使用  @click.stop     去阻止事件冒泡的时候 会发现, @click.stop  并没有生效,就很神奇 问题如图: 解决问题方案

    2024年02月12日
    浏览(54)
  • 微信小程序中的基础标签

    小程序标签是指微信小程序页面中的不同组件,用于展示和处理数据。 小程序标签由结构标签、样式标签和逻辑标签三部分组成,分别对应页面的结构、样式和逻辑。 小程序标签具有良好的兼容性,可以在不同品牌、不同型号的手机上正常运行。 1.view标签:用于展示文本、

    2024年01月17日
    浏览(53)
  • 微信小程序项目实战 微信小程序的事件对象

    目录 小程序前后端交互 自定义组件的使用 语法说明 properties 定义 案例  微信小程序的事件对象 e.target和e.currentTarget  微信小程序的事件传参 传参方式一: data-key=\\\'value\\\' 传参方式二: id=\\\'value\\\' scroll-view 使用  scroll-view 中使用flex布局 scroll-into-view 下拉刷新 上拉加载 微信小程

    2024年02月09日
    浏览(129)
  • JavaScript中的事件冒泡和事件捕获机制

    JavaScript中的事件冒泡和事件捕获机制是开发中非常重要的概念,掌握了这两种机制,可以更好地理解事件处理和DOM操作。本文将深入探讨JavaScript中的事件冒泡和事件捕获机制,包括它们的工作原理、如何使用它们、以及它们的优缺点。 一、什么是事件冒泡和事件捕获机制?

    2024年02月03日
    浏览(44)
  • 微信小程序——事件监听

    微信小程序是一种轻量级的应用程序,它在移动设备上提供了丰富的用户体验。在开发微信小程序时,事件监听是一项重要的技术,它允许开发者捕捉和处理用户的各种操作。本文将介绍微信小程序事件监听的概念、用法和一些实用示例。 在微信小程序中,事件监听是一种机

    2024年02月08日
    浏览(42)
  • 微信小程序事件绑定

    事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理。 当事件回调触发的时候,会收到一个事件对象 event,它的详细属性如下表所示。 target 是触发该事件的源头组件,而 currentTarget 则是当前事件所绑定的组件。 点击内

    2023年04月08日
    浏览(51)
  • 微信小程序(二)事件绑定

    注释很详细,直接上代码 上一篇 新增内容: 点击事件绑定 注册页面 设置页面初始化数据 事件处理函数的实现 更新数据并更新视图 源码: index.wxml index.js 效果演示: 按钮点击前 按钮点击后 下一篇

    2024年01月17日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包