我将创建SmartForm
组件来处理表单。
此组件应获取handleError
和handleWarning
方法作为props
来处理表单提交结果。此方法将触发来自MessageActions.js
的操作:
addWarning: (header, message) => {
AppDispatcher.dispatch({
actionType: MessageConstants.ADD_MESSAGE,
messageType: MessageConstants.WARNING_MESSAGE,
header,
message,
});
},
addError: (header, message) => {
AppDispatcher.dispatch({
actionType: MessageConstants.ADD_MESSAGE,
messageType: MessageConstants.ERROR_MESSAGE,
header,
message,
});
},
我将在许多其他文件中使用SmartForm
。因此,我必须多次导入MessageActions.js
并传递给将要运行它的组件方法。
示例:SmartForm的任何父项:
import MessageActions from './actions/MessageActions';
...
handleError = (header, error) => {
MessageActions.addError(header, error);
};
handleWarning = (header, warning) => {
MessageActions.handleWarning(header, warning);
};
...
render () {
...
return <SmartForm handleError={this.handleError} handleWarning={this.handleWarning} />
}
我不喜欢这样,因为我必须多次MessageActions.js
导入和定义handleError
和handleWarning
方法。
此外,我也不想将此代码移至SmartForm
组件中,因为我将保持该组件可重复使用且独立于操作(在其他项目中,我应使用handleWarning
和{{ 1}}将有所不同。
可能我应该创建HOC组件,该组件将包装我所有的handleError
组件,并进行SmartForm
的导入以及MessageActions.js
和handleError
的定义(复制粘贴代码)在里面?
还是最好在handleWarning
的每个父级中导入MessageActions.js
和handleError
和handleWarning
的定义?
还有其他解决方案吗?