美文网首页
事件总线

事件总线

作者: 张_何 | 来源:发表于2022-05-12 09:49 被阅读0次
  • 在 React 中,我们通常依赖 events 库来实现跨组件之间的事件传递
  • 安装命令: yarn add events
  • 常用 API
  • 创建 EventEmitter 对象,eventBus 对象
  • 发出事件:eventBus.emit("事件名称",参数); 这个参数是可变参数
  • 监听事件:eventBus.addListener("事件名称",监听函数);监听函数中的参数也是可变的,是与发事件传的参数的顺序是一致的,如果发出事件时传的是一个参数,那么监听函数也只需接收一个参数;如果发出事件传的是多个参数,那么监听函数也需要写同样多的参数才能将传递过来的参数接收完,如果发出 n 个参数,而接收只写了 n-1,个参数,那么只能收到发出的前 n-1 个参数
  • 移除事件:eventBus.removerListener("事件名称",监听函数);如果不写传监听函数,则默认移除所有相同事件名称的事件
import React, { PureComponent } from 'react';
import { EventEmitter } from 'events';

// 事件总线: event bus
const eventBus = new EventEmitter();

class Home extends PureComponent {
  // 一般在这里监听,因为监听只需要一次
  componentDidMount() {
    eventBus.addListener("sayHello", this.handleSayHelloListener);
  }
  // 有监听就要有移除监听
  componentWillUnmount() {
    eventBus.removeListener("sayHello", this.handleSayHelloListener);
  }

  handleSayHelloListener(num, message) {
    console.log(num, message);
  }

  render() {
    return (
      <div>
        Home
      </div>
    )
  }
}

class Profile extends PureComponent {
  render() {
    return (
      <div>
        Profile
        <button onClick={e => this.emmitEvent()}>点击了profile按钮</button>
      </div>
    )
  }

  emmitEvent() {
    eventBus.emit("sayHello", 123, "Hello Home");
  }
}

export default class App extends PureComponent {
  render() {
    return (
      <div>
        <Home/>
        <Profile/>
      </div>
    )
  }
}

相关文章

  • RxJava实现事件总线(RxBus)学习笔记

    目录事件总线的介绍利用RxJava实现事件总线(Rxbus)Rxbus的使用 事件总线的介绍 1. 什么是事件总线...

  • 事件总线知多少(1)

    源码路径:Github-EventBus事件总线知多少(1)事件总线知多少(2) 1. 引言 事件总线这个概念对你...

  • 事件总线知多少(2)

    源码路径:Github-EventBus事件总线知多少(1)事件总线知多少(2) 1.引言 之前的一篇文章事件总线...

  • 使用JavaScript手写一个事件总线功能

    事件总线 事件总线主要是实现一些任意的或非父子关系的组件之间的数据通信 实现一个事件总线功能需要: 事件派发 $...

  • 走马观花 - EventBus

    EventBus是Android的中央发布/订阅事件系统。 事件被post到总线,总线将事件传递给具有事件类型的匹...

  • [大白装逼]YEventBus事件总线的实现

    Y事件总线:基于java的Observe和Observable实现的事件总线github地址:https://gi...

  • 事件总线

    Android应用开发中,经常会涉及Activity,Fragment,Service等不同组件或者模块之间的消息...

  • 事件总线

    EventBus 3.0进阶:源码及其设计模式 完全解析 EvenBus3.0用法介绍 Eventbus Squa...

  • 事件总线

    事件总线,提供了一个,解耦合,和异步的能力

  • 事件总线

    事件总线主要是为了解决组件间跨层级通信.

网友评论

      本文标题:事件总线

      本文链接:https://www.haomeiwen.com/subject/hxnjurtx.html