【问题标题】:Vuex mapMutations isn't working as expectedVuex mapMutations 没有按预期工作
【发布时间】:2019-12-25 15:52:21
【问题描述】:

我有一个命名空间存储(命名空间:true),我正在尝试通过 mapMutations 访问它。当我通过 mapMutations 调用它时,它会导致“不是函数”错误。当我通过 this.$store 直接调用它时,它工作正常。为什么 mapMutations 版本不起作用?伪代码如下所示。 FWIW 我正在使用最新的 Vue/Vuex 版本。

import { mapGetters, mapMutations } from 'vuex'

computed: {
  ...mapGetters('someModule', ['foo']),
  ...mapMutations('someModule', ['bar']),
}
mounted() {
   this.$store.commit('someModule/bar'); // This works
   this.bar(); // This gives me a "this.bar() is not a function" error
   this.baz();
}
methods: {
  baz() {
   this.bar(); // This gives me a "this.bar() is not a function" error
  },
}

【问题讨论】:

    标签: vue.js vuex


    【解决方案1】:

    Mutation/Actions 是 function 留在 methods 内

    ...mapMutations('someModule', ['bar']),
    

    应该在methods里面

    methods: {
      ...mapMutations('someModule', ['bar']),
      executeBar() {
         this.bar()
       }
    }
    

    有关methods 和computed 之间的更多信息和比较,请参阅此Method vs Computed in Vue

    【讨论】:

    • 我试着把它放在方法中,我得到了同样的错误。代码在上面更新了
    • @ekjcfn3902039 您对mapMutations 的呼叫需要移至methods。所以methods: { ...mapMutations('someModule', ['bar']) }.
    • 是的@skirtle,就是这样。谢谢!
    • 啊谢谢@skirtle 我错过了在方法中添加这一行。
    猜你喜欢
    • 2019-02-06
    • 2020-05-31
    • 2019-11-24
    • 2021-10-19
    • 2020-03-18
    • 2012-06-14
    • 2014-11-15
    • 1970-01-01
    • 2012-07-02
    相关资源
    最近更新 更多