direct-vuex
direct-vuex copied to clipboard
Uncaught TypeError: rootCommit is undefined
I have several modules and want to commit chat
module from one on actions of the user
module.
The problem:
i cannot use rootCommit. There is no Type error but at runtime this error occures:
Uncaught TypeError: rootCommit is undefined
This is my store:
const {
store,
rootActionContext,
moduleActionContext,
rootGetterContext,
moduleGetterContext,
} = createDirectStore({
state: {
initialised: false,
},
actions: {
// Some actions
},
mutations: {
setInit(states) {
states.initialised = true;
},
},
modules: {
chat: chatModule,
user: userModule,
session: sessionModule,
},
});
export {
store,
rootActionContext,
moduleActionContext,
rootGetterContext,
moduleGetterContext,
};
My userModule:
export const userModule = defineModule({
namespaced: true as true,
state: {
userList: [],
currentUserId: 0,
} as UserStates,
actions: userActions,
mutations: userMutations,
getters: userGetters,
});
And this is a part of my userActions:
export const userActions = defineActions({
join(context) {
const { rootCommit } = storeActionContext(context);
Server.instance.send('something').subscribe((message)=>{
rootCommit.chat.addMessage(message);
})
}
}
const storeActionContext = (context: any) =>
moduleActionContext(context, userModule);
It should work. Maybe you could add some debug log:
join(context) {
const directContext = storeActionContext(context);
Server.instance.send('something').subscribe((message)=>{
console.log("directContext", directContext);
directContext.rootCommit.chat.addMessage(message);
})
}