微信小程序 自定义全局事件监听实现

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

一般app页面都需要关联刷新,比如登录后刷新登录前页面,故此,需要一个全局事件监听类,怎么实现呢?

根目录创建文件夹utils,新建文件eventBus.js(致敬java平台的EventBus),码入以下代码:

/**
  by ppg
  1282797911@qq.com
  2023.8.26
**/
const eventBus = {

  post: function ({ // 发送事件
    params: params, // 事件参数
    event: event // 事件名称
  }) {
    for (var eventMap of _map) {
      for (var obj of eventMap[1]) {
        if (obj[0] == event) {
          obj[1](params)
        }
      }
    }
  },

  off: function ({ // 移除使用该key添加的所有监听事件
    key: key, // key,通过newKey()获取
  }) {
    _map.delete(key)
  },

  /**
   * {
   *  'key': {
   *    'event': listener
   *  }
   * }
   * **/
  on: function ({ // 开始监听event事件
    key: key, // key,通过newKey()获取
    event: event, // 事件名称
    listener: listener // 回调
  }) {
    var eventMap = _map.get(key)
    if (eventMap == null) {
      eventMap = new Map()
      _map.set(key, eventMap)
    }
    eventMap.set(event, listener)
  },

  newKey: function (params) { // 获取key
    _key ++
    return _key
  }

}

var _key = -1 // 根key
const _map = new Map() // 储存key和监听的关联数组

module.exports = {
  eventBus
}

主要就是newKey、on、off、post方法,分别是创建key、开始监听、结束监听、发出事件等功能实现。

来看看用法:

首先是添加调用方式,打开app.js,这里onLaunch方法里添加一下代码,将调用方法添加到wx对象下:

// app.js
App({
  onLaunch() {
    wx.eventBus = require('utils/eventBus.js').eventBus
  }
})

 然后在是调用:

Page({
  onLoad() {
    this.key = wx.eventBus.newKey()
    wx.eventBus.on({
      key: this.key,
      event: 'change',
      listener: function (params) {
        console.log('change回调')
        console.log(params)
      }
    })
  },
  onReady() {
    wx.eventBus.post({
      params: {
        tips: '回调的参数'
      },
      event: 'change'
    })
  },
  onUnload() {
    wx.eventBus.off({
      key: this.key
    })
  }
})

说明一下代码:

1.onLoad()里调用newKey()生成key,这个key将作为页面的标识符,添加和移除全部的事件监听时需要;

2.onReady()里调用post()发出事件,并携带了参数;

3.onUnload()里移除了当前页面全部的监听事件。文章来源地址https://www.toymoban.com/news/detail-674969.html

到了这里,关于微信小程序 自定义全局事件监听实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 微信小程序的页面滚动事件监听

    微信小程序中可以通过 Page 的 onPageScroll 方法来监听页面滚动事件。具体步骤如下: 在页面的 onLoad 方法中注册页面滚动事件监听器: 在 onPageScroll 方法中处理页面滚动事件。onPageScroll 方法会在页面滚动时被调用,参数 event 包含了当前页面滚动的位置信息,例如 event.scrollT

    2024年02月07日
    浏览(49)
  • uniapp+微信小程序监听返回事件

    代码附在最后 适用场景: uniapp开发微信小程序 需求是我点击列表进入数据信息的详情界面,点击详情界面的收藏,返回上一界面后,更新列表中的收藏情况。 目录 一、使用onUnload监听页面卸载 二、使用getCurrentPages()获取当前页面栈所有的实例,并找到上一界面的实例进行数

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

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

    2024年02月10日
    浏览(33)
  • 微信小程序全局事件订阅eventBus

    微信小程序全局事件订阅 在Vue开发中,我们可能用过eventBus来解决全局范围内的事件订阅及触发逻辑,在微信小程序的开发中我们可能也也会遇到同样的需求,那么我们尝试下在小程序(原生小程序开发)中实现类似eventBus的事件订阅功能。 全局事件订阅 全局实例 在Vue中我

    2024年02月12日
    浏览(40)
  • 微信小程序 在bindscroll事件中监听scroll-view滚动到底

    scroll-view其实提供了一个 bindscrolltolower 事件 这个事件的作用是直接监听scroll-view滚动到底部 但是 总有不太一样的情况 公司的项目 scroll-view 内部 最下面有一个 类名叫 bottombj 的元素 我希望 滚动到这个 bottombj 上面的时候就开始加载滚动分页 简单说 bottombj这块元素不参与滚动

    2024年02月07日
    浏览(60)
  • uni-app微信小程序多种分享事件监听并带参数

    监听用户点击右上角菜单的「复制链接」按钮时触发的事件。 *query:字符串string类型 ‘a=1b=2’ *

    2024年02月15日
    浏览(82)
  • 微信小程序——页面事件,.启用下拉刷新监听页面的下拉刷新事件,上拉触底事件,停止下拉刷新的效果

    下拉刷新是移动端的专有名词,指的是通过手指在屏幕上的下拉滑动操作,从而重新加载页面数据的行为。 启用下拉刷新有两种方式: a.全局开启下拉刷新 在 app.json 的window 节点中,将 enablePullDownRefresh 设置为 true. b.局部开启下拉刷新 在页面的.json 配置文件中,将 enablePull

    2024年01月25日
    浏览(61)
  • 关于uni-app微信小程序监听顶部左上角的返回事件

    在项目上返回上一级的时候需要清空vuex里的数据,使用了onBackPress无效。 查看官方文档后才发现onBackPress对微信小程序无效。  然后我发现了另一个生命周期——onUnload 完美解决!!!

    2024年02月08日
    浏览(57)
  • 【微信小程序】-- 自定义组件 - 数据监听器 (三十四)

    💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘   大家好,又见面了,

    2024年02月09日
    浏览(48)
  • 【微信小程序】使用 WebSocket 进行订阅操作、连接监听、接收到服务器的消息事件

    在微信小程序中使用 WebSocket 进行订阅操作,可以通过 wx.connectSocket 方法创建 WebSocket 连接,并通过相关事件处理函数进行订阅和数据处理。 以下是一个示例代码,演示了在微信小程序中使用 WebSocket 进行订阅: 在上述代码中,我们首先使用 wx.connectSocket 方法创建 WebSocket 连接

    2024年02月16日
    浏览(62)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包