Redux-Loop调度不从reducer返回promise

时间:2017-08-09 05:17:32

标签: reactjs loops react-redux redux-loop

我正在使用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 个答案:

答案 0 :(得分:1)

我认为问题的一部分是将您的promise .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};
  }
}