MODULE 不起作用 - 未知突变类型:user/setUserInfo

MODULE doesn't work - unknown mutation type: user/setUserInfo

这是我的 store/index.js

const store = new Vuex.Store({
  modules: {
    app,
    user,
  },
  state: {
    token: getToken(),
    hasLogin: false,
  },
  mutations: {
    ...rootMutations,
  },
  actions: {
    ...rootActions,
  },
})

export default store

store/modules/user.js

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  namespaced: true,
  state: {
    phone: '',
  },
  mutations: {
    setUserInfo(
        { state },
        { phone },
    ) {
      // ...
      state.phone = phone | state.phone
    },
  },
})

export default store

这里是 Action wrong wrong

rootActions.js

const actions = {
getUserInfo: async function(store) {
    const { commit, state } = store
    console.log(store)
    return await new Promise((resolve, reject) => {
            // a lot of request code, save results in user/setUserInfo

            commit('login')
            commit('user/setUserInfo', {
              phone: r.phone,
            })
    })
  },
}

那么警报有问题

[vuex] unknown mutation type: user/setUserInfo(env: macOS,mp,1.05.2106300; lib: 2.17.0)

我不知道为什么我不能访问用户模块中的突变,我搜索了很多从模块访问根突变的示例,但它似乎对我不起作用。

谁能帮忙解决这个问题

您不应该为每个模块创建新的 vuex 存储实例。您需要导出包含 stateactionsmutationsactions.

的对象

因此您的 user.js 文件应如下所示:

export default {
  namespaced: true,
  state: {
    phone: '',
  },
  mutations: {
    setUserInfo(
        state,
        { phone },
    ) {
      // ...
      state.phone = phone | state.phone
    },
  },
}