关于vue router和pubsub混用的一个坑

今天尝试在router中的beforeEach方法使用pubsub发布消息想要让组件进行响应,但是后来发现无论怎样都没有响应

首先 我在其他普通组件中的mounted钩子上也发布了一个消息,订阅消息的成功响应了,于是我在发布消息,订阅消息之后打印了一下"消息被发布/订阅了",最终发现router发布消息的时间比组件订阅消息要早,也就是说,发布消息的时候组件还没有订阅,所以不响应

要解决 只需给router中加上个setTimeout,让它晚一点发布

 setTimeout(() => {
        PubSub.publish('search', "我终于发布了")
        console.log(PubSub)
        console.log("router发布了信息" + new Date().getTime());
    }, 1);

现在就可以了

 二、pubsub一次只能传一个参数进去,所以有多个参数的话要把他们封装成一个对象

posted @ 2022-03-20 20:48  dronff  阅读(115)  评论(0)    收藏  举报