Я пытаюсь реализовать функцию Async / Await в моем редуксе, но, похоже, она не работает.
Actions.js
export function getUserCart(token) {
return async dispatch => {
await axios
.get(`${apiUrl}/user/cart`, {
headers: { Authorization: `Bearer ${token}` }
})
.then(response => {
dispatch({
console.log(GET_USER_CART_SUCCESS);
type: GET_USER_CART_SUCCESS,
cart: response.data
});
})
.catch(error => {
dispatch({
type: GET_USER_CART_FAILED,
error: error.response.data
});
});
};
}
Reducers.js
case GET_USER_CART_SUCCESS:
return {
...state,
cart: action.cart,
type: action.type
};
Component.js
componentDidMount() {
console.log("before");
this.props.getUserCart(this.props.user.idToken);
console.log("after");
}
Консоль вернулась:
before
after
GET_USER_CART_SUCCESS
Тем не менее, если я сделаю это
async componentDidMount() {
console.log("before");
await this.props.getUserCart(this.props.user.idToken);
console.log("after");
}
, он вернет правильный вывод:
before
GET_USER_CART_SUCCESS
after
Мне неудобно добавлять асинхронные и ожидающие в функции моего компонента, это не должно бытьтак тоже. Есть ли что-то, чего мне не хватает в моих Actions.js?