我正在使用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));
数据总是正确地返回,但由于某种原因,永远不会作为对原始发送的承诺返回。
任何建议都会很棒!
答案 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};
}
}