Reactjs 使用两个不同的减速器返回两个有效载荷-反应,重新加载
我打了两个异步电话Reactjs 使用两个不同的减速器返回两个有效载荷-反应,重新加载,reactjs,asynchronous,redux,Reactjs,Asynchronous,Redux,我打了两个异步电话 export function getProfile(username) { const request = axios .get(`${profileUrl}/${username}`) .then(res => res.data) .catch(err => Promise.reject({ status: 500, message: "Invalid name" })) .then(previousRes =>
export function getProfile(username) {
const request = axios
.get(`${profileUrl}/${username}`)
.then(res => res.data)
.catch(err => Promise.reject({ status: 500, message: "Invalid name" }))
.then(previousRes =>
axios
.get(`${profileUrl}/${username}/repos`)
.then(res => Object.assign(previousRes, res.data))
.catch(err =>
Promise.reject({ status: 500, message: "Something went wrong" })
)
);
return { type: "GET_PROFILE", payload: request };
}
在本例中,我使用Object.assign合并两个响应并将其作为一个返回。我如何才能为每个动作返回两种不同的类型。例如,获取配置文件和获取其他内容您可以按照此模式进行操作,每个操作只有一个操作:
export const actionCreators = {
myFunc: (param1, param2) => async (dispatch, getState) => {
try {
const response1 = await fetch(param1);
const data1 = await response1.json();
const response2 = await fetch(param2);
const data2 = await response2.json();
dispatch({ type: FUNC_RESPONSE_SUCCESS, data1, data2 });
} catch (err) {
dispatch({ type: FUNC_RESPONSE_FAIL });
}
},
myOtherFunc: (param3) => async (dispatch, getState) => {
try {
const response3 = await fetch(param3);
const data3 = await response3.json();
dispatch({ type: OTHER_FUNC_RESPONSE_SUCCESS, data3 });
} catch (err) {
dispatch({ type: OTHER_FUNC_RESPONSE_FAIL });
}
}
}
export const reducer = (state, action) => {
switch (action.type) {
case FUNC_RESPONSE_SUCCESS:
return {
// logic
};
case FUNC_RESPONSE_FAIL:
return {
// logic
};
case OTHER_FUNC_RESPONSE_SUCCESS:
return {
// logic
};
case OTHER_FUNC_RESPONSE_FAIL:
return {
// logic
};
default:
return state;
}
}
}