关于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一次只能传一个参数进去,所以有多个参数的话要把他们封装成一个对象

浙公网安备 33010602011771号