我正在尝试创建 vuex 商店系统,但遇到了问题。在 Action.js 中,我可以 console.log 并获取令牌,但在 mutation.js 中我得到未定义。
动作.js
async [LOGIN_ACTION](context, payload) {
let response = "";
try {
response = await axios.post("http://127.0.0.1:8000/pages/login/", {
email: payload.email,
username: payload.username,
password: payload.password,
returnSecureToken: true,
});
} catch (err) {
let errorMessage = SignupValidations.getErrorMessageFromCode(
err.response.data[0]
);
throw errorMessage;
}
if (response.status === 200) {
context.commit(SET_USER_TOKEN_DATA_MUTATION, {
email: response.data.email,
username: response.data.username,
token: response.data.idToken,
expiresIn: response.data.expiresIn,
userId: response.data.localId,
});
console.log(response.data.token); //Here I get my token without any problem
}
},
突变.js
export default {
[SET_USER_TOKEN_DATA_MUTATION](state, payload) {
state.email = payload.email;
state.token = payload.token;
state.expiresIn = payload.expiresIn;
state.refreshToken = payload.refreshToken;
state.userId = payload.userId;
state.autoLogout = false;
console.log(state.token); //I get undefined here
},
};
getters.js
export default {
[GET_USER_TOKEN_GETTER]: (state) => {
console.log(state.token); //undefined
return state.token;
},
};
另外,我在我的组件中使用了 mapGetters。