react当中组件数据传输方式之(pubsub-js)

第三方中间件 pubsub-js

功能任意组件之间通讯,一对多,多对多

说明:pubsub-js一个居于发布/订阅模式的一个中间件

概念:绑定事件监听 === 订阅消息,触发事件 ====发布消息

安装命令:npm i pubsub-js

使用方式

发送消息:PubSub.publish(名称,参数)

订阅消息:PubSub.subscrib(名称,函数)

取消订阅:PubSub.unsubscrib(发布者函数)

详细代码示例如下:

A组件

import React, { Component } from 'react'
import PubSub from 'pubsub-js'
import './A.css'
export default class Acomponent extends Component {
  state={
    data:{name:'A组件的信息',keyVal:'B组件你的身份已经泄密,请火速转移位置脱离危险'}
  }
  handler=()=>{
    //A组件发布消息
    PubSub.publish('name',this.state)
  }
  render() {
    return (
      <div className='Acomponent'>
        Acomponent<br/>
        <button onClick={this.handler}>A组件</button>
      </div>
    )
  }
}

B组件

import React, { Component } from 'react'
import './B.css'
import PubSub from 'pubsub-js'
export default class Bcomponent extends Component {
  state = {
    data:{}
  }

  componentDidMount() {
    //订阅消息
    this.token = PubSub.subscribe('name', (mes, data) => {
      console.log(mes, data);
      this.setState(data)
    })
  }

  //组件要卸载时取消订阅事件
  componentWillUnmount() {
    PubSub.unsubscribe(this.token)
  }
  render() {
    const {keyVal} = this.state.data
    return (
      <div className='Bcomponent'>
        Bcomponent<br />
        <textarea name="" id="" cols="30" rows="10" value={keyVal} defaultValue={'B组情报接受处件'}></textarea>
      </div>
    )
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值