我一直在寻找一些处理请求错误的解决方案,例如尝试通过redux操作登录服务器时出现无效的密码错误。
我找到的最可靠的解决方案是拥有一个减速器,该减速器负责处理错误,而组件将其显示的内容基于减速器给出的状态。
示例:
我有一个reducer属性“ emailNotValidated”,如果服务器响应该用户电子邮件尚未验证,该属性将变为true,然后我的组件将显示稍有不同,并带有重新发送验证电子邮件的选项以及更多内容。
问题是:如果用户退出登录页面然后返回登录页面,该怎么办?我不希望他/她找到验证选项,因为我希望“更新”登录页面。每次打开此组件/页面时,我是否必须调度并采取行动以“复位”该减速器?
答案 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
这样做,您实际上可以知道哪个模块返回错误,有效负载是什么,并实际上获得错误消息。
您可能不需要返回有效载荷,但这完全取决于您和您的喜好。