action.jsjak asynchronizować/oczekiwać działań redux-thunk?
export function getLoginStatus() {
return async(dispatch) => {
let token = await getOAuthToken();
let success = await verifyToken(token);
if (success == true) {
dispatch(loginStatus(success));
} else {
console.log("Success: False");
console.log("Token mismatch");
}
return success;
}
}
component.js
componentDidMount() {
this.props.dispatch(splashAction.getLoginStatus())
.then((success) => {
if (success == true) {
Actions.counter()
} else {
console.log("Login not successfull");
}
});
}
Jednak, gdy piszę kod component.js z async/czekają jak poniżej otrzymuję ten błąd:
Possible Unhandled Promise Rejection (id: 0): undefined is not a function (evaluating 'this.props.dispatch(splashAction.getLoginStatus())')
component.js
async componentDidMount() {
let success = await this.props.dispatch(splashAction.getLoginStatus());
if (success == true) {
Actions.counter()
} else {
console.log("Login not successfull");
}
}
Jak mogę czekać na getLoginStatus(), a następnie wykonać pozostałe instrukcje? Wszystko działa całkiem dobrze przy użyciu .then(). Wątpię, że czegoś brakuje w mojej asynchronicznej/oczekiwanej implementacji. próbując to rozgryźć.
Czy kiedykolwiek opracowałeś ten wzór? jeśli tak, czy mógłbyś opublikować odpowiedź tutaj? – ajonno
Dlaczego czekasz na obietnicę w komponencie reagującym na redux? To jest łamanie wzoru jednokierunkowego danych. – Aaron