Использование vuex-module-decorator У меня есть действие authenticate
, которое должно изменить состояние.
@Action
public authenticate(email: string, password: string): Promise<Principal> {
this.principal = null;
return authenticator
.authenticate(email, password)
.then(auth => {
const principal = new Principal(auth.username);
this.context.commit('setPrincipal', principal);
return principal;
})
.catch(error => {
this.context.commit('setError', error);
return error;
});
}
// mutations for error and principal
Но это не так со следующим сообщением:
Необработанное отклонение обещания Ошибка: "ERR_ACTION_ACCESS_UNDEFINED: Вы пытаетесь получить доступ к this.someMutation () или this.someGetter внутри @Action?
Это работает только в динамических модулях.
Если не динамический, используйте this.context.commit ("mutationName", payload) и this.context.getters ["getterName"]
Что я не понимаю, так это то, что он хорошо работает с @MutationAction
и async
. Однако я скучаю по типу возврата Promise<Principal>
.
@MutationAction
public async authenticate(email: string, password: string) {
this.principal = null;
try {
const auth = await authenticator.authenticate(email, password);
return { principal: new Principal(auth.username), error: null };
} catch (ex) {
const error = ex as Error;
return { principal: null, error };
}
}
-
В настоящее время я чувствую себя заблокированным и хотел бы получить некоторую помощь для реализации @Action
, который может изменять состояние и возвращать определенный тип в Promise
.