从React-admin中的redux形式访问change()的简单方法?

时间:2018-07-18 17:23:07

标签: reactjs react-admin

在做出选择后,我需要更新一些表单数据。

我想使用redux-form中的change()函数在选择字段的onChange处理程序中执行此操作。

是否可以使用标准react-admin轻松访问redux-form更改功能?

我尝试从道具中捡起它,但它不在那里;

const { change } = this.props;
console.log(change); // undefined

1 个答案:

答案 0 :(得分:2)

我不确定这是否是您要找的东西,但这就是我在react-admin项目中处理它的方式。我刚刚直接从change导入了redux-form,并从REDUX_FORM_NAME传递了react-admin常量。

进口

import { change } from 'redux-form'
import { REDUX_FORM_NAME } from 'react-admin'
import { connect } from 'react-redux'

编辑组件

<Edit>
    <SimpleForm>
        <MyCustomComponent />
    </SimpleForm>
</Edit>

MyCustomComponent应该自动从record收到一个SimpleForm道具。另外,我将其连接到redux存储:

export default connect(mapStateToProps)(MyCustomComponent)

我有意不向connect提供第二个注释,因此可以访问组件中的dispatch。也许还有另一种方法,但这对我有用。

现在,在MyCustomComponent内,在为取消按钮创建的handleCancel处理程序中,我更改了要更改的字段。在我的特定情况下,我想重置字段以包含该字段的未修改存储值。

handleCancel = () => {
    const { record, dispatch } = this.props;
    dispatch(change(REDUX_FORM_NAME, 'name', record.name));
    dispatch(change(REDUX_FORM_NAME, 'description', record.description));
    dispatch(closeDetails()); // unrelated to this answer; closes a modal
}

在上面的代码中,我将“名称”和“描述”字段重置为其原始值。希望这会有所帮助。