react pubsub 首次订阅失败

使用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);
    }

问题描述

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 4k
1 个回答

subjectresult两个组件都不能同时加载,肯定发布了收不到啊。

另外你subscribe的写法有误,this.subscr并非指向subscribe返回的函数,因此unsuscribe是失败的...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题