如何在vuex的store中调用组件?

下面有文字补充,情况是这么个情况:

// componentA.vue
...
methods: {
  handleEventA (){
    this.$store.dispatch('onEventA')
  }
}

// store/index.js
actions: {
  ...
  onEventA: ({ commit }) => {
    asyncHandler()
      .then(res => {
        commit('afterEvnetA', res)
      })
  }
},
mutations: {
  ...
  afterEventA: (state, res) => {
    // 这儿需要用到Message组件输出res信息
    // 可是在这儿,组件还没注册,要等到main.js中才注册
    // 那么,我在这儿怎么才能用上Message组件呢?
    // 如果说在state中定义一个全局Message状态,倒也能用,就是感觉太不灵活了。。。
  }
}

vuex storemutations中,需要调用Message组件,但是Message组件main.js中才注册,有什么办法能在vuex storemutations灵活使用组件吗?

阅读 10k
2 个回答

看你代码意思, 就是在组件 a 中去做一个异步, 为什么不直接把调用接口直接在 action 中 return 出来... 页面中调用的时候不就能获取到需要的 res.message 了吗... 为什么非得处理成在 mutations 中去调用Message...

如果我没理解错的话,你是想在这里调用 Message 插件,而不是组件。先不说你的实现是否合理,可以这样做:
import Vue from 'vue';
在你的 mutation 里面使用 Vue.prototype.Message 来获得 Message 插件。
你说的 Message 在 main.js 里面才注册,是的,没有我问题,但是这个 mutation 的调用却是在注册之后,所以可以通过 Vue.prototype 拿到 Message 插件。

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