我有一个redux动作,它调用api并返回一个对象。配置文件对象(如果执行成功)或错误对象(如果未成功执行)。除了一件事,一切都正常。我通过模式窗口发送数据。如果一切正常,我只是重新加载页面,否则,我不想重新加载页面,我想显示错误。 动作:
export const addEducation = (eduData, history) => dispatch => {
axios
.post("/api/profile/education", eduData)
.then(window.location.reload())
.catch(err =>
dispatch({
type: GET_ERRORS,
payload: err.response.data
})
);
};
API:
router.post(
"/education",
passport.authenticate("jwt", { session: false }),
(req, res) => {
const { errors, isValid } = validateEduInput(req.body);
//Check validation
if (!isValid) {
return res.status(400).json(errors);
}
Profile.findOne({ user: req.user.id }).then(profile => {
const newEdu = {
school: req.body.school,
degree: req.body.degree,
fieldOfStudy: req.body.fieldOfStudy,
from: req.body.from,
to: req.body.to,
current: req.body.current,
description: req.body.description
};
//Add to exp array
profile.education.unshift(newEdu); //Add the education to the beginning of the array opposed to push
profile
.save()
.then(profile => res.json(profile))
.catch(err => res.status(404).json(err));
});
}
);
如您在API代码中所看到的,我验证收到的输入,如果未通过,则返回错误对象。 现在,redux操作会以两种方式重新加载页面。我应该如何检查是否有错误并防止在.then函数中重新加载页面?
答案 0 :(得分:1)
从代码中,我无法破译任何错误。也许你可以 尝试也绑定.then响应:
然后(()=> window.location.reload())
另外,尝试调试或记录响应以检查错误情况下的状态码。