У меня есть проект vuex, хранилище которого. js файл полностью выходит из-под контроля, поэтому я пытаюсь разделить его на модули на основе ресурсов, например, групп, пользователей и т. Д. c.
* 1002. * Когда я пытаюсь отправить действие, например, в модуль групп, я получаю:
[vuex] unknown action type
вот мой модуль:
import GroupsService from '@/services/GroupsService'
import InvitesService from '@/services/InvitesService'
export const state = {
currentGroup: {},
groupInvites: [],
groups: []
}
export const mutations = {
setCurrentGroup(state, group) {
state.currentGroup = group
},
setGroupInvites(state, groupInvites) {
state.groupInvites = groupInvites;
}
}
export const actions = {
createGroup({ commit }, group) {
return GroupsService.createGroup(group).then(() => {
commit('ADD_GROUP', group)
})
},
getUserGroups({ commit }) {
GroupsService.getGroups()
.then(resp => {
console.log('in store getUserGroups, this is usergroups: ', resp);
commit('setCurrentGroup', resp.data[0]);
});
},
getGroupInvites({ commit }, user) {
InvitesService.getAllUserInvitation(user.id)
.then(resp => {
console.log('in store, getGroupInvites,this is groupInvites: ', resp.data);
commit('setGroupInvites', resp.data);
});
}
}
export const getters = {
getGroupById: state => id => {
return state.groups.find(group => group.id === id)
}
}
Вот компонент:
<template>
...
</template>
<script>
import moment from 'moment-strftime'
import _ from 'lodash'
import ActsService from '@/services/ActsService'
import { mapActions } from 'vuex'
export default {
name: "Leaderboard",
data() {
return {
lastUserAct: {}
}
},
computed: {
leaderboard () {
return this.$store.getters.leaderboard;
},
currentGroup () {
return this.$store.state.groups.currentGroup;
}
},
async mounted () {
await this.setCurrentGroup ();
this.getLeaderboard();
},
methods: {
...mapActions('groups', [
'getUserGroups'
]),
getLeaderboard: async function () {
console.log('in LeaderBoard, this is currentGroup: ', this.$store.state.groups.currentGroup.name)
this.$store.dispatch("updateLeaderboard", this.currentGroup);
},
moment: function (datetime) {
return moment(datetime);
}
,
async lastActByUser (leader_id) {
console.log('in Leaderboard, getting last act for user')
const response = await ActsService.fetchLastActByUser ({
userId: leader_id
});
this.lastUserAct = response.data
console.log('in Leaderboard, lastAct response: ', response.data)
},
async setCurrentGroup() {
console.log('settingCurrent Group')
this.getUserGroups
}
}
};
в моем главном хранилище я делаю:
import * as groups from '@/store/modules/groups.js'
Vue.use(Vuex)
export default new Vuex.Store({
modules: {
user,
groups
}
...
В частности, смонтированный обратный вызов вызывает функцию this.setCurrentGroup. Предполагается, что эта функция выполняет действие в модуле groups, но этого не происходит.
ошибка: пространство имен модуля не найдено в mapActions (): groups /