在我的React项目中,我有一个用户界面和一个用于编辑界面不同部分的表格。
编辑表单始终是相同的(它有几个文本输入),但是它必须根据要编辑的元素来调用不同的onSubmit
处理程序。示例:
handleSubmit(formValues) {
if ('user is editing this button') {
this.props.editThisButton()
} else if ('user is editing that button') {
this.props.editThatButton()
} else if ('user is editing that title') {
this.props.editThatTitle()
} else if ( ) {
...
}
}
我正在尝试找到一种适当的方法来配置此Submit操作。
我目前在状态上存储一个formConfig
变量,该变量具有所有需要提交的信息,例如:
this.setState({
formConfig: {
editButton: true,
editTitle: false,
buttonToEdit: 123,
// ... all the options that Submit might need
}
})
但是我不喜欢这样的状态信息。
我想在状态上存储回调。像这样:
this.setState({
onFormSubmit: function(values) {
// take all user values and put in somewhere, i.e. edit this button
}
})
然后使用此回调作为道具来呈现我的表单:
{
this.state.onFormSubmit && <EditForm onSubmit={this.state.onFormSubmit}/>
}
哪种方法更好?第二种方法看起来可以减少很多样板工作,但我从未听说过在React状态下存储回调。这完全合适吗?将来会不会有问题?