【问题标题】:Cant dispatch action without mutation不能在没有突变的情况下调度动作
【发布时间】:2021-03-31 07:46:52
【问题描述】:

我无法在不提交突变的情况下使用 vuex 调度操作。

我像往常一样导入了常用的 mapActions 等(请记住所有工作正常,我可以通过 mapMutations、mapActions 等执行突变、getter、获取我的状态,如果我包含提交,我什至可以调度操作)。

对于最简单的事情,我在我的专用 store/actions.js 中创建了一个动作。

repeatWord(data) {
console.log(data)
}

在我的 vue 组件上,我将其定义如下:

methods: {
...mapActions({
repeatWord: 'repeatWord'
)}

我通过以下方式调用它:

this.repeatWord('test')

应该可以吧?嗯,它没有。 我在控制台中得到的是 {getters: {...}, state: {...}, rootGetters: {...}, dispatch: f, commit: f,...}

我在这里错过了什么?

【问题讨论】:

    标签: javascript function vue.js vue-component vuex


    【解决方案1】:

    来自docs

    动作处理程序接收一个上下文对象,该对象在商店实例上公开相同的方法/属性集

    这是第一个参数。第二个参数是您传递的数据。所以像这样定义你的动作:

    repeatWord(context, data) {
       console.log(data)
    }
    

    您经常会看到 context 参数被解构如下:

    repeatWord({ commit, dispatch }, data) {
       console.log(data)
    }
    

    【讨论】:

      猜你喜欢
      • 2020-04-02
      • 2016-04-08
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 2015-08-24
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多