vuex订阅个别突变

时间:2017-08-23 17:16:57

标签: javascript vue.js vuex

是否可以订阅个别突变?

而不是:

this.$store.subscribe((mutation, state) => {
   if(mutation === 'someMutation'){
       doSomething()
   }
})

我想要这样的事情:

this.$store.subscribe('someMutation', state => {
    doSomething()
})

4 个答案:

答案 0 :(得分:0)

如何将Vue原型中的方法包装起来?

所以没有:

this.$store.subscribe((mutation, state) => {
   if(mutation === 'someMutation'){
       doSomething()
   }
})

您会有类似的内容

Vue.prototype.subscribeMutation = function(someMutation, someFunction) {
       this.$store.subscribe((mutation, state) => {
       if(mutation === someMutation){
           someFunction(state)
       }
    })
}

我尚未测试代码,但是您应该能够轻松获得工作结果。

答案 1 :(得分:0)

来自vuex文档:

在每次突变后调用处理程序并接收突变 描述符和变异后状态作为参数。

它将对所有突变做出反应,因此您只能根据自己的条件实施。

答案 2 :(得分:-1)

如果突变的唯一工作是更改存储,您能否告诉您该突变是由什么原因引起的:

[types.MUTATE_SET_ACTIVE_TICKER]: (state, payload) => {
state.activeTicker = payload
},

然后您可以直接从组件中的存储中获取数据:

this.$store.state.activeTicker

答案 3 :(得分:-4)

尝试这样的事情:

this.$store.subscribe(mutation => {
                if (mutation.type === 'setData') {
//  do something here
                }
            });