vue 页面中使用bus添加监听函数,在上层页面调用不到解决办法?

vue 页面中使用bus添加监听函数,在上层页面调用不到解决办法

最近项目中兄弟组建中间或者多层级组件中使用bus调用发现高层级调用低层级方法时,必须要等低层级渲染结束以后才能使用

导致很多时候调用不成功

例如:

app.vue中使用this.$bus.$emit('xxx')

而函数在下下下层级中的created(this.$bud.$on('xxx',()={vvv}))

这样就会导致调用数据的时候app无法调用到函数xxx

即便加this.$nextTick() 也不行,虽然添加setTimeOut可以,但是会存在逻辑风险,比如当渲染过慢导致等,所以个人觉得这种写法不妥,有没有大佬对于这种问题有更好的解决方案呢??

及简单又可以避免风险的呢?

阅读 1.5k
1 个回答

可以使用我写的小工具event-watcher
子孙元素:

emit('xxx-event', {}, true);

祖先元素:

on('xxx-event', (e) => {
}, true);

这两个方法里的第三个参数约定:如果 emit 先于 on 调用,最后一个 emit 的内容将被缓存,在 on 调用之后立即触发

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