javascript - vuex 不识别突变

标签 javascript vue.js vuejs2 vuex

这是我的 vuex 根存储。

export default new Vuex.Store({
  state: {
    account: {}
  },
  mutations: {
    set_account(state,payload) {
      console.log("I AM INSIDE MUTATIONS", )
    }
  },
  actions: {
    setAccount({
      commit
    }, payload) {
      return new Promise((resolve, reject) => {
        commit(set_account, payload)
        resolve()
      })
    }
  },
  plugins: [vuexLocal.plugin],
  modules: {
    auth,
    update
  }
});

在设置帐户操作之后,我提交了 set_account 突变。但是它说,

set_account is not defined

为什么会这样?

最佳答案

尝试将 commit()type 一起使用,第一个参数是一个等于 'set_account' 的字符串,即相应的名称 Action 函数名称:

export default new Vuex.Store({
  state: {
    account: {}
  },
  mutations: {
    set_account(state,payload) {
      console.log("I AM INSIDE MUTATIONS", )
    }
  },
  actions: {
    setAccount({
      commit
    }, payload) {
      return new Promise((resolve, reject) => {
        commit('set_account', payload)
        resolve()
      })
    }
  },
  plugins: [vuexLocal.plugin],
  modules: {
    auth,
    update
  }
});

来自 Vuex documentation提交:

commit(type: string, payload?: any, options?: Object)

type,第一个参数应该是一个字符串,在这种情况下需要匹配 set_account 的函数名称。如果它不是字符串,它会尝试计算在当前执行上下文中实际上未定义的表达式 set_account

希望对您有所帮助!

关于javascript - vuex 不识别突变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53927450/

相关文章:

javascript - 未捕获的 DOMException : Failed to execute 'readAsDataURL' on 'FileReader'

javascript - 继续在混合应用程序 Javascript 中获取 [Object Object]

vue.js - VueX - 在与 Action 不同的模块中调度 Action

javascript - Angular : reload page after redirection

javascript - 如何使用 React 教程修复 Meteor 中的 eslint 错误

javascript - Nuxt auth模块未将登录用户设置为存储状态

vue.js - Webpack +SCSS错误: "Module parse failed: Unexpected character ' @' (1:0)"

javascript - 如何只缩放 svg 的一部分

javascript - 功能在 IE8 中运行良好,但在 Chrome、Mozilla、safari 中运行不佳

css - bootstrap-vue 改变 <b-modal> 的位置