获取在VueX中发生的最后一个突变的名称

我正在使用命名空间下的VueX模块,并且在每个模块状态内都有处理程序来确定我的API调用是否已完成,并触发名为“ MODULENAME_LOADING”的突变。 API调用完成后,它会触发其他突变以将数据设置为状态。 我希望能够从父布局组件中搜索是否最后一个突变提交中包含单词“ LOADING”,但找不到找到最后一个突变名称的方法。

是否可以从组件内部检查最后一个突变是什么,还是必须分别处理每个模块?

zylan131415 回答:获取在VueX中发生的最后一个突变的名称

Vuex提供了一种subscribe方法,以允许View侦听Store的突变(以及对操作的subscribeAction)。看起来像这样:

...
data() {
  return { 
    unsubFn: null,lastMutation: null
  }
},mounted() {
  this.unsubFn = this.$store.subscribe((mutation,state) => {
    this.lastMutation = mutation.type;
  });
},beforeDestroy() {
  if(this.unsubFn) {
    this.unsubFn();
  }
}
...

以下是其实际操作的基本示例:https://codepen.io/Qumez/pen/oNNyexB

调用订阅会返回一个允许您退订的函数,您绝对要这样做,以防止发生突变时触发重复操作。我更喜欢将其存储在data()函数中,并在beforeDestroy()挂钩中调用它。

本文链接:https://www.f2er.com/3137114.html

大家都在问