Отправление Redux-Loop не возвращает обещание от редуктора
Я использую v2.2.2 избыточного цикла для обработки моих побочных эффектов от вызова сервера.
Отправив действие из моего компонента следующим образом:
checkStatus() {
const user = Utils.toJS(this.props.user);
this.props.dispatch(UserActions.getUserData(user._id))
.then((res) => {
console.log(res)
}
}
Я ожидаю, что мое обещание вернется из отправки, но оно всегда возвращается
[]
Мое действие выглядит так...
export async function getUserData(data) {
return await getUser(data)
.then((res) => ({type: USER_GET_SUCCESS, payload: res}))
.catch((err) => ({type: USER_GET_FAILURE, payload: err}));
}
где getUser выглядит так:
export async function getUser(data) {
return await get(`/users/${data}`)
}
и попадает в редуктор и сохраняется в состоянии примерно так:
case USER_GET_SUCCESS:
return state
.set('user', fromJS(action.payload.data));
Данные всегда возвращаются должным образом, но по какой-то причине никогда не возвращаются в качестве обещания первоначальной отправке.
Любые предложения будут удивительными!
1 ответ
Я думаю, что часть проблемы смешивает ваше обещание .then
код с вызовами async/await внутри одной функции. Попробуйте это вместо этого:
export async function getUserData(data) {
try {
const result = await getUser(data);
return { type: USER_GET_SUCCESS, payload: result };
} catch (err) {
return {type: USER_GET_FAILURE, payload: err};
}
}