2

鉴于做出的选择,我需要更新一些表单数据。

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

有没有办法使用标准的 react-admin 轻松访问 redux-form 更改功能?

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

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

1 回答 1

4

我不确定这是否是您正在寻找的东西,但这就是我在我的 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在我的组件中访问。也许另一种方式是可能的,但这对我有用。

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

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
}

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

于 2018-12-01T00:41:47.917 回答