如何处理react / redux中的请求错误?

时间:2018-08-03 22:07:27

标签: reactjs redux react-router react-redux redux-thunk

我一直在寻找一些处理请求错误的解决方案,例如尝试通过redux操作登录服务器时出现无效的密码错误。

我找到的最可靠的解决方案是拥有一个减速器,该减速器负责处理错误,而组件将其显示的内容基于减速器给出的状态。

示例:

我有一个reducer属性“ emailNotValidated”,如果服务器响应该用户电子邮件尚未验证,该属性将变为true,然后我的组件将显示稍有不同,并带有重新发送验证电子邮件的选项以及更多内容。

问题是:如果用户退出登录页面然后返回登录页面,该怎么办?我不希望他/她找到验证选项,因为我希望“更新”登录页面。每次打开此组件/页面时,我是否必须调度并采取行动以“复位”该减速器?

1 个答案:

答案 0 :(得分:0)

鉴于您有一个React项目,该项目具有几个主要用于以下目的的模块:

  • 用户
  • 博客
  • 评论

在您的操作中,您可以执行以下操作:

// actions/user.js
export const userMessageError = (payload, message) => {
    type: 'USER_ERR_MESSAGE',
    error: {
       message,
       payload
    },
}

您实际上可以在模块的每个reducer内放置一些错误处理案例,如下所示:

// reducer/user.js

case 'USER_ERR_MESSAGE':
// You might want to set the request payload and the error message
// to the state in order for you to actually know what's going on
//
// Then you could have a toast or a modal in the container or inside
// your component to actually display the actual error message

这样做,您实际上可以知道哪个模块返回错误,有效负载是什么,并实际上获得错误消息。

您可能不需要返回有效载荷,但这完全取决于您和您的喜好。