我正在使用带有react redux的axios。成功发布后,我收到此错误。这是处理axios和redux错误的正确方法。如果没有,请指导我。我的参考链接axios,how to deal with errors,error handling in axios。如果这个问题显而易见,我道歉。我是初学者。提前谢谢。
export const landingPageValues=(values)=>{
return dispatch=>{
return axios.post('http://127.0.0.1:8000/mainData',values)
.then(res=>{dispatch(mainpageuploadsuccess(res.data))})
.catch(err=>{dispatch(mainpageuploadfailed(err.response.data.error))})
}
}
export const mainpageuploadsuccess = (data) =>{
return {
type:'MAINPAGE_UPLOAD_SUCCESS',
mainUploadData:data
}
}
export const mainpageuploadfailed = (error) =>{
return {
type:'MAINPAGE_UPLOAD_FAILED',
error
}
}
Reducer
case 'MAINPAGE_UPLOAD_SUCCESS':
const {mainUploadData} = action;
return {
...state,
mainUploadData,
error:false
};
case 'MAINPAGE_UPLOAD_FAILED':
const {error} = action;
return {
...state,
error,
mainUploadData:false
};
答案 0 :(得分:1)
在axios.post
之前删除了return关键字export const landingPageValues=(values)=>{
return dispatch=>{
axios.post('http://127.0.0.1:8000/mainData',values)
.then(res=>{dispatch(mainpageuploadsuccess(res.data))})
.catch(err=>{dispatch(mainpageuploadfailed(err.response.data.error))})
}
}
答案 1 :(得分:0)
error
对象可能不一定包含response
密钥(例如:当它是网络错误时)。
所以你需要在处理错误之前添加一个检查。
if (error.response && error.response.data) {
dispatch(mainpageuploadfailed(err.response.data.error));
} else {
handleErrorsElsewhere(error)
}
答案 2 :(得分:0)
你可以试试这个:
case 'MAINPAGE_UPLOAD_SUCCESS':
const {mainUploadData} = action;
return {
error:false,
...state,
mainUploadData
};
case 'MAINPAGE_UPLOAD_FAILED':
const {error} = action;
return {
mainUploadData:false,
...state,
error,
};
希望它对你有所帮助。
答案 3 :(得分:-3)
检查一次服务器响应。我的意思是,如果您使用的是js节点,请检查响应(例如res.send()),然后发送的数据将发送到前端