鍍金池/ 問答/HTML/ 如何在vuex的store中調(diào)用組件?

如何在vuex的store中調(diào)用組件?

下面有文字補充,情況是這么個情況:

// 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狀態(tài),倒也能用,就是感覺太不靈活了。。。
  }
}

vuex storemutations中,需要調(diào)用Message組件,但是Message組件main.js中才注冊,有什么辦法能在vuex storemutations靈活使用組件嗎?

回答
編輯回答
終相守

如果我沒理解錯的話,你是想在這里調(diào)用 Message 插件,而不是組件。先不說你的實現(xiàn)是否合理,可以這樣做:
import Vue from 'vue';
在你的 mutation 里面使用 Vue.prototype.Message 來獲得 Message 插件。
你說的 Message 在 main.js 里面才注冊,是的,沒有我問題,但是這個 mutation 的調(diào)用卻是在注冊之后,所以可以通過 Vue.prototype 拿到 Message 插件。

2017年5月5日 23:15
編輯回答
拮據(jù)

看你代碼意思, 就是在組件 a 中去做一個異步, 為什么不直接把調(diào)用接口直接在 action 中 return 出來... 頁面中調(diào)用的時候不就能獲取到需要的 res.message 了嗎... 為什么非得處理成在 mutations 中去調(diào)用Message...

2018年9月4日 15:49