pubsub
释:消息订阅与发布 点击进入gitee
作用
使用于任意组件间通信
安装
yarn add pubsub-js
引入(每个组件使用时都需要)
使用es6引入:import PubSub from 'pubsub-js; 使用CommonJS:const PubSub = require('pubsub-js');
语法
发布
PubSub.publish('主题','内容')
PubSub.publishSync('主题','内容')
订阅
token = PubSub.subscribe('主题',(titleName,data)=>{
})
取消订阅
一般在componentWillUnmount中取消订阅
PubSub.unsubscribe(token);
PubSub.unsubscribe(fnName);
PubSub.clearAllSubscriptions();
react做的一个小例子
场景:组件a和组件b之间的通信,兄弟关系
class A extends Component{
state = {
obj:{},
}
componentDidMount() {
this.token = PubSub.subscribe('TEXT', (msg, data) => {
this.setState({obj:data})
});
}
componentWillUnmount(){
PubSub.unsubscribe(this.token)
}
render(){
let {obj:{text}}=this.state
return(
<div>{`这里时接收到的内容——————`${text}}</div>
)
}
}
class B extends Component{
state={
obj:{
text:''
}
}
onSettext(e){
let value = e.target.value;
let { obj } = this.state;
obj.text = value;
this.setState({ obj })
PubSub.publish('TEXT', this.state.obj);
}
render(){
return(
<input type="text" onChange={(e)=>{this.onSettext(e)}>
)
}
}
|