Redux动作和模态窗口

时间:2018-07-08 07:30:11

标签: javascript reactjs redux react-redux

我有一个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函数中重新加载页面?

1 个答案:

答案 0 :(得分:1)

从代码中,我无法破译任何错误。也许你可以 尝试也绑定.then响应:

然后(()=> window.location.reload())

另外,尝试调试或记录响应以检查错误情况下的状态码。