在React状态上存储回调函数:不好的主意?有哪些选择?

时间:2018-10-28 06:01:59

标签: javascript reactjs

在我的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状态下存储回调。这完全合适吗?将来会不会有问题?

0 个答案:

没有答案