<返回更多

在React中使用PubSubJS进行组件通信

2019-12-20    
加入收藏

什么是 pubsub?

PubSubJS 是 一个利用 JAVAScript 进行发布/订阅式通信的库。

gitHub:https://github.com/mroderick/PubSubJS

 

在React中使用PubSubJS进行组件通信

 

主要特征

 

下载引入

通过CDN方式:

<script src="https://unpkg.com/pubsub-js"></script><script>console.log(PubSub)</script>
在React中使用PubSubJS进行组件通信

 

npm:

npm install pubsub-js

yarn:

yarn add pubsub-js

import PubSub from 'pubsub-js'// orconst PubSub = require('pubsub-js')

 

基本例子

通过PubSub变量的 publish(id, data) 方法发布,并且传递需要交流的信息。

id:发布的消息ID 为pubsub-js提供辨识,唯一性,不可重复

data: 发布消息传递的参数,如果要传递多个参数,请传递对象类型

在React中使用PubSubJS进行组件通信

 

发布完消息之后,就可以开始订阅了

通过 PubSub.subscribe(id, callback(message, data){}) 订阅消息

id:对应之前 publish的 id

callback: 回调函数,第一个参数为 id , 第二个参数为 publish(id, data) 中 data 传递的参数

 

在 react 中简单使用

实现一个父组件中包含两个兄弟组件,它们分别是 search 搜索组件,以及根据 search 组件搜索结果的不同 ,Result 组件进行不同的响应。

父组件:

    render () {        return (            <div className="App">                <Search />                <Result />            </div>          )    }

Search组件

import React, { Component }from 'react'import PubSub from 'pubsub-js'export default class Search extends Component {    handleSearch () {        const searchName = this.input.value.trim()        // 发布 search、传递用户在搜索框中输入的结果        PubSub.publish('search', searchName)     }    render () {        return (           <div>                <input type="text" name="search" ref={input => this.input = input} />                <button onClick={this.handleSearch.bind(this)}>搜索</button>           </div>        )    }}

 

在React中使用PubSubJS进行组件通信

 

Result 组件

import React, { Component }from 'react'import PubSub from 'pubsub-js'export default class Search extends Component {    state = { searchName: null }       componentDidMount () {        // 订阅 search 消息, 并根据输入结果进行不同处理        PubSub.subscribe('search', (msg, data) => {            console.log('msg:', msg)            console.log('data:', data)            this.setState({ searchName: data })        })    }    render () {        return (        <div>{this.state.searchName}</div>        )    }}

 

在React中使用PubSubJS进行组件通信

 

 

在React中使用PubSubJS进行组件通信

 

 

总结

PubSubJS 可以让我们很轻松的处理不同组件之间的通信,同时不足 1k 的体积也不同对项目造成什么负担。

不只是ReactPubSubJS也适用于 Vue 等其它框架项目。

官方文档传送门:https://github.com/mroderick/PubSubJS

源码传送门:https://unpkg.com/pubsub-js@1.7.0/src/pubsub.js

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>