首页 > 编程语言 >Taro 小程序基于eventCenter封装的消息监听

Taro 小程序基于eventCenter封装的消息监听

时间:2024-11-29 10:03:05浏览次数:5  
标签:eventCenter 封装 EventBusManager off eventName ._ Taro eventBus

基于eventCenter封装的工具类,方便快捷监听和是释放事件

import Taro from '@tarojs/taro'

class EventBusManager {
    constructor() {
        if (!EventBusManager.instance) {
            this._eventCenter = Taro.eventCenter
            EventBusManager.instance = this
        }
        return EventBusManager.instance
    }

    // 订阅事件
    on(eventName, callback) {
        this._eventCenter.on(eventName, callback)
    }

    // 发布事件
    emit(eventName, data) {
        this._eventCenter.trigger(eventName, data)
    }

    // 移除订阅
    off(eventName, callback) {
        this._eventCenter.off(eventName, callback)
    }

    // 移除所有订阅
    offAll(eventName) {
        this._eventCenter.off(eventName)
    }
}

const eventBus = new EventBusManager()
export default eventBus

使用起来也很简单,方法如下:

  import eventBus from '@/utils/eventbus'

    // 定义回调函数
    const handleCartChange = (data) => {
        // setCartsQtyData(data);
    };

    const handleSearchFilterChange = (filter_type) => {
        // setFilterType(filter_type);
    };

    useEffect(() => {
        // 监听事件
        eventBus.on('cartChange', handleCartChange)
        eventBus.on('searchFilterChange', handleSearchFilterChange)
        return () => {
            /// 页面卸载时移除事件
            eventBus.off('cartChange', handleCartChange)
            eventBus.off('searchFilterChange', handleSearchFilterChange)
        }
    }, [])

// 需要发送消息的地方
    eventBus.emit('cartChange', {
      invId:10001,qty:100,
    })
    eventBus.emit('cartChange', {
      invId:10001,qty:100,
    })
    eventBus.emit('searchFilterChange', filter_type)

标签:eventCenter,封装,EventBusManager,off,eventName,._,Taro,eventBus
From: https://www.cnblogs.com/qqcc1388/p/18575897

相关文章

  • Taro 鸿蒙技术内幕系列(四):JDImage 自研鸿蒙图片库
    作者:京东零售何骁基于Taro打造的京东鸿蒙APP已跟随鸿蒙Next系统公测,本系列文章将深入解析Taro如何实现使用React开发高性能鸿蒙应用的技术内幕背景2024年初,京东正式启动了鸿蒙APP的开发工作。由于电商APP大量依赖图片来展示商品信息,对图片库的性能和加载体验......
  • 用VC2019+MFC 创建一个DLL封装MD工业相机库然后用EXE调用这个相机库采图并且显示
    主要描述:用VC2019+MFC创建一个DLL封装MD工业相机库,再建一个EXE调用这个相机库采图并且显示。先创建库工程:新建一个库工程,创建完成,添加一个DllFunction.h头文件,一个DllFunction.cpp源文件拷贝相关SDK文件到对应的目录下(略,自行拷贝到相应位置,路径加进工程)源码如下D......
  • Allegro 如何导出封装 / 导入DXF结构图 / 导入导出参数
    一、导出封装准备练习板子时,已经有完整的PCB板,但是没有封装库。那就可以从板上导出封装,再放到正确的文件夹中。直接上图:1.选择文件-导出-封装库 2.全选下面的选项,设置导出的路径,如果不设置就默认存放在当前的PCB文件夹中,在点击Export。3.在新的PCB上设置封装路径 ......
  • 【接口封装】——6、省略用户名的超出长度部分
    解释:"zzzzzzzzzzzzz"-->“zzzzz...”参数:对应账号作用:在数据库中搜索并设置对应账号的用户名,省略处理用户名的过长部分头文件:#include<qsqlquery.h>函数定义:QStringgetUserName(constQString&account);voidsetUserName();源代码:QStringUseMySQL::g......
  • C++学习日记---第13天(类和对象---封装)
    笔记复习1.类和对象c++面向对象的三大特性为:封装,继承,多态c++认为万事万物都皆为对象,对象上有其属性和行为具有相同性质的对象,我们可以抽象为称为类2.封装作用:将属性和行为作为一个整体,表现生活中的事物,具有相同性质的对象,我们可以抽象为类。语法:class类名{访问权限(也可......
  • Taro 鸿蒙技术内幕系列(三) - 多语言场景下的通用事件系统设计
    作者:京东零售朱天健基于Taro打造的京东鸿蒙APP已跟随鸿蒙Next系统公测,本系列文章将深入解析Taro如何实现使用React开发高性能鸿蒙应用的技术内幕背景在鸿蒙生态系统中,虽然原生应用通常基于ArkTS实现,但在实际研发过程中发现,使用C++可以显著提升应用框架和业务......
  • java小工具封装-给定es客户端和SearchSourceBuilder和es索引名直接用scroll方式查询出
    封装类:传参1esClient传参2自定义searchSourceBuilder传参3索引名(可直接复制粘贴使用)publicstaticList<Map<String,Object>>getEsResultData(RestHighLevelClientesClient,SearchSourceBuildersearchSourceBuilder,Stringindex_name)throwsIOException{......
  • java小工具封装- java 查询mysql/pg库 sql中所有属性和属性值
     封装类:传参数据库连接和查询的sql就可以打印出查询sql的所有属性和属性值(可直接复制粘贴使用)publicstaticvoidselectAll(Connectionconnection,Stringsql){ResultSetMetaDatarsmd=null;try{//trycatch判断是否有异常Statemen......
  • java小工具封装 - 给定连接执行指定路径的sql文件
    封装类-传参数据库连接connection和sql文件的绝对路径(可直接复制粘贴使用)publicstaticvoidexecuteSqlFile(Stringpath,Connectionconnection){//读取文件BufferedReaderreader;Statementpst=null;try{pst=......
  • java面向对象知识点: 封装,构造,重载
    目录封装封装知识点private(私有)public(公共) 二、getter和setter方法getter方法(访问器方法)setter方法(修改器方法)三、封装类的设计原则单一职责原则高内聚性一.Java为什么要封装?一、数据隐藏与安全性保护数据不被随意访问防止外部干扰二、提高代码的可维......