pubsub.js 消息的发布订阅

PubSub.js消息的发布订阅

在react中, 进行组件中传递数据 :

  * 可以使用 『props』 通过标签属性的方式, 从组件外部向组件内部传递数据, 将组件和数据解耦

       * 进行父组件往子组件传递数据比较方便

  * 进行兄弟组件之间传递数据, 只能把数据放到父组件中, 然后兄弟之间传递, 把方法写到父组件里面,然后通过标签的形式,往子组件传递 

 要是拆分组件传递数据 当嵌套层数比较多 就比较麻烦 , 所以建议使用PubSub.js

 

  PubSub 发布订阅是一种设计模式, 简化代码解耦

  组件间数据的传递方式

        消息的发布订阅,当嵌套层数比较多,可以用此工具库

 

1 下载:
2 npm i pubsub.js   或者   yarn add pubsub.js

 

 1 简单demo 应该放在组件中使用,这里做个简单的测试
 2 
 3 //引入
 4 import PubSub from 'pubsub-js';
 5 
 6 //订阅一个频道   频道名称           频道名    数据
 7 PubSub.subscribe('h5210510', (channel, data) => {
 8     console.log('当前的频道名为:'+channel);
 9     console.log('当前收到的数据为:' + data);
10 });
11 
12 
13 setTimeout(() => {
14     //发布消息
15     PubSub.publish('h5210510', '你好消息发布订阅');
16 }, 2000)

 

 1   import React, { Component } from 'react';
 2   import PubSub from 'pubsub-js';
 3   
 4   export default class Show extends Component {
 5       state = {
 6           name: ''
 7       }
 8       //组件挂载完毕 组件将要被渲染的时候进行订阅
 9       componentDidMount() {
10          //订阅
11          PubSub.subscribe('newName', (_, data) => {
12              this.setState({
13                  name: data
14              })
15          })
16      }
17  
18      render() {
19          return (
20              <div>{this.state.name}</div>
21          )
22      }
23    //组件将要卸载
24      componentWillUnmount(){
25       //取消订阅              频道
26         PubSub.unsubscribe('keyword');
27       }
28 
29    }

 

 

posted @ 2021-08-10 19:54  刘小灿  阅读(176)  评论(0)    收藏  举报