我最近在ReactJS项目上使用Redux,我遇到了一个有趣的情况,我需要生成一些向用户显示的错误消息。这些可能是消息的验证错误类型,也可能是报告系统状态的消息。可能没有任何方法可以做到这一点,但我很好奇的是,是否将确定错误消息的逻辑放入我的Reducer或者我的reducer引用或是否将它放在我的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.";
}
}
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>
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>
我也可能缺少一些与下面两个例子不同的其他模式或方法。如果是这种情况并且有一个令人信服的理由这样做,那么这也会很棒。
答案 0 :(得分:0)
这些论点让我想起DDD(域驱动设计)和CQRS(命令查询责任隔离)中的一些相关内容。在DDD中,有时会出现关于是否以及在何种程度上仅在域模型中的对象上存在数据的争论。如果不使用属性/字段/数据来识别或支持域逻辑本身,那么它应该用于骑行吗?使用CQRS,尽管已经同意将读取写入分开,但我认为在不同程度上您可以对响应于域事件而创建的读取模型进行非规范化。示例的范围可以从存在于关系数据库中的读取模型到一组静态生成的网页。
我确信我已经遗漏了其他几个重要方面,但这是我能想到的最重要的事情。