Отправление 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};
  }
}
Другие вопросы по тегам