Vuex操作无法提交突变



我正在为一个网站开发身份验证功能,我正在使用Firebase。每当用户登录firebase时,我在商店中的操作就会被触发并提交我的突变,因此状态就会用userID设置。不知怎的,每当我试图提交我的突变时,我总是得到错误:commit is not defined。我似乎找不到解决这个问题的方法,我上过的所有论坛都没有帮助,所以我真的希望这里有人能帮助我解决这个问题,我真的很感激

我的行动:

async login({ dispatch }, user) {
const token = await auth.currentUser.getIdToken(true);
const idTokenResult = await auth.currentUser.getIdTokenResult();
let approved = false;
const userData = await firestore.collection('users').doc(user.email).get();
if (userData) {
approved = userData.data().isApproved
}
const userInfo = {
name: user.displayname || null,
email: user.email || null,
avatar: user.photoURL || null,
uid: user.uid,
approved
};
Cookies.set('access_token', token); // saving token in cookie for server rendering
commit('saveUID', userInfo.uid);
}
};

我的突变:

saveUID (state, uid) {
state.uid = uid;
}, 

操作的第一个参数是context,它具有类似commitdispatch的功能。使用{ dispatch }作为参数提取(析构函数赋值(dispatch。您可以使用{ dispatch, commit }来修复此问题,并实际将提交分配给本地变量。

正在销毁分配

async login({ dispatch, commit }, user) {
commit('your_mutation')
}

使用上下文

async login(context, user) {
context.commit('your_mutation')
}

最新更新