当我在承诺解决后尝试调用回调时遇到了这个问题(使用.then)事实证明,这给了我的 const请求某种不同的承诺,reducer 返回为未定义:
行动:
export function lookup(company, callback) {
const id = company.textfield;
const url = `${ROOT_URL}${id}`;
const request = axios.get(url)
.then(() => callback())
return {
type: LOOK_UP,
payload: request,
meta: id
};
}
减速器:
import { LOOK_UP } from '../actions/index';
export default function(state = {}, action) {
switch (action.type) {
case LOOK_UP:
const data = action.payload.data;
const id = action.meta;
if (data.Success === true) {
return { ...state, [id]: data.CompanyInformation };
} else {
return state;
}
}
return state;
}
如您所见,我将 axios 获取的 API 中的数据传递给我的 reducer。在此之后,我设置了状态,我需要调用“actions”中的回调(它会在组件内创建另一个动作调用)。不幸的是,我收到错误,即减速器const data = action.payload.data未定义。
当我不使用此回调时,一切正常,但情况是我需要仅在此减速器返回新状态后才调用该回调。