使用PubSub.subscribe 首次订阅失败,点击返回重新点击发布后成功但是订阅成功了两次,第三次之后就正常了,
但是在app.jsx中不使用switch 而直接使用Subject跟Result两个组件就没有问题。多多指教谢谢!!
app.jsx中
<Switch>
<Route path='/subject' component={Subject}/>
<Route path='/result/' component={Result}/>
<Redirect to='/subject'/>
</Switch>
subject.jsx 发布订阅消息
handerSubmit = ()=>{
PubSub.publish('out',outcome);
this.props.history.push('/result')
}
result.jsx 接收订阅消息
componentDidMount(){
let subscr;
new Promise((resolve,reject)=>{
subscr = PubSub.subscribe('out',(msg,outcome)=>{
console.log(1)
//alert(outcome);
arr = [
outcome[4]+outcome[9]+outcome[13]+outcome[17]+outcome[23]+outcome[29],
outcome[2]+outcome[5]+outcome[12]+outcome[19]+outcome[21]+outcome[28],
outcome[1]+outcome[7]+outcome[14]+outcome[16]+outcome[24]+outcome[27],
outcome[0]+outcome[6]+outcome[10]+outcome[15]+outcome[20]+outcome[25],
outcome[3]+outcome[8]+outcome[11]+outcome[18]+outcome[22]+outcome[26]
];
resolve(arr)
})
}).then(
(result)=> {
this.showCanvas(result)
},
);
}
componentWillUnmount(){
PubSub.unsubscribe(this.subscr);
}
问题描述
问题出现的环境背景及自己尝试过哪些方法
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
subject
和result
两个组件都不能同时加载,肯定发布了收不到啊。另外你subscribe的写法有误,this.subscr并非指向subscribe返回的函数,因此unsuscribe是失败的...