Vuex操作无法提交突变

问题描述 投票:0回答:1

我正在使用网站的身份验证功能,我正在使用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;
}, 
vue.js vuex nuxt.js store
1个回答
2
投票

动作的第一个参数是context,其功能类似于commitdispatch。您可以使用dispatch作为参数来提取(通过销毁){ dispatch }。您可以使用{ dispatch, commit }解决此问题,并实际上将提交分配给局部变量。

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

async login(context, user) {
  context.commit('your_mutation')
}
© www.soinside.com 2019 - 2024. All rights reserved.