【发布时间】:2016-04-28 04:28:15
【问题描述】:
我最近在一个 ReactJS 项目中使用 Redux,我遇到了一个有趣的情况,我需要生成某种类型的错误消息显示给用户。这些可能是消息的验证错误类型,也可能是报告系统状态的消息。可能没有规定的方法可以做到这一点,但我很好奇的是是否将确定错误消息的逻辑放入我的减速器或由我的减速器引用,或者是否将其放置在我的 ReactJS 组件中。
将错误代码转换为消息
const getIrsFormSubmissionErrorMessage = (errorCode) => {
switch(errorCode) {
case "server_error": return "Your submission failed because of a problem on the server";
case "authorization_failure": return "You are not allowed to submit this form.";
case "validation_error": return "One or more of the values entered are invalid.";
case undefined: return undefined;
default: return "Your submission failed, please contact support.";
}
}
例如。 1 在 reducer 中派生并在组件中显示的错误消息:
function irsForm(state, action) {
switch (action.type) {
case "SUBMIT_IRS_FORM_FAILED":
return {
...state,
submitRequest: {
executing: false,
errorMessage: getIrsFormSubmissionErrorMessage(action.errorCode)
},
};
default:
return state;
}
}
const FormError = (props) =>
<span className="form-error">{props.errorMessage)<span>
例如。 2 组件中派生的错误消息:
function irsForm(state, action) {
switch (action.type) {
case "SUBMIT_IRS_FORM_FAILED":
return {
...state,
submitRequest: {
executing: false,
errorMessage: action.errorCode,
},
};
default:
return state;
}
}
const FormError = (props) =>
<span className="form-error">{getIrsFormSubmissionErrorMessage(props.errorCode)}<span>
其他选项?
也有可能我遗漏了与下面两个示例不同的其他模式或解决方法。如果是这样,并且有令人信服的理由这样做,那也很好。
【问题讨论】:
标签: error-handling reactjs redux