我想如下设置VuexMutations :

export default {
    props: {
        store: String
    },
    methods: {
        ...mapMutations({
            changeModel: `${this.store}/changeModel`
        })
    }
}

但我发现了一个错误:

未捕获的TypeError:无法读取未定义的属性"store"

如何在模块名称中正确使用props

我想映射this.$store.commit('form1/changeModel'),其中form1是从props设置的.

推荐答案

Vuex helper mapMutations可与可与this配合使用的功能一起使用.

这方面似乎没有文档,但Vuex单元测试helpers.spec.js说明了这种模式.

const vm = new Vue({
  store,
  methods: mapMutations({
    plus (commit, amount) {
      commit('inc', amount + 1)
    }
  })
})

作为奖励,该函数允许向变异传递一个参数,这是一个常见的要求.

您的代码更改将是:

export default {
  props: {
    store: String
  },
  methods: {
    ...mapMutations({
      changeModel(commit) { commit(`${this.store}/changeModel`) }
    })
  }
}

组件中的调用只有changeModel()个,MapTranslations负责注入commit参数.

注意,除了一些额外的噪声(与简单的this.$store.commit()相比),我不确定这会增加多少,但可能您的需求比示例代码更复杂.

Vue.js相关问答推荐

Visual Studio代码中的VUE/VLAR扩展不断崩溃:JS/TS语言服务立即崩溃5次…

Vuetify 2中自定义标头的排序和筛选

带 Bootstrap 的 Vue js,导航栏菜单不起作用

在移动版本中使用标准的 v-data-table

vue3 输入标签给出错误 Vue.use 不是函数

处理多张卡片中的按钮

如何在 vue js 的一页路由下显示不同的 category._id

Vuex Mutations 和 Airbnb eslint

Vuetify grid layout - 如何填充网格中元素的高度

在 jest document.querySelector 中测试 vue 组件期间始终返回 null

Express.js + lint 出错

为什么 Vue 路由/Webpack 开发服务器现在在页面刷新时显示无法获取/路径?

使用 aria-live 在 vue.js 中向屏幕阅读器宣布信息

如何在 Vue 3 中使用 SSR

Vue:如何在按钮单击时调用 .focus()

删除一行后刷新 Bootstrap-Vue 表

基本 vue.js 2 和 vue-resource http 获取变量赋值

'不提供名为'createRouter'的导出'' vue 3、vite 和 vue-router

如何设置 :id 前缀字符串?

在 VueJS 中使用 Axios - 这个未定义