鉴于做出的选择,我需要更新一些表单数据。
我想使用 redux-form 中的 change() 函数在选择字段的 onChange 处理程序中执行此操作。
有没有办法使用标准的 react-admin 轻松访问 redux-form 更改功能?
我尝试从道具中捡起它,但它不存在;
const { change } = this.props;
console.log(change); // undefined
鉴于做出的选择,我需要更新一些表单数据。
我想使用 redux-form 中的 change() 函数在选择字段的 onChange 处理程序中执行此操作。
有没有办法使用标准的 react-admin 轻松访问 redux-form 更改功能?
我尝试从道具中捡起它,但它不存在;
const { change } = this.props;
console.log(change); // undefined
我不确定这是否是您正在寻找的东西,但这就是我在我的 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
}
在上面的代码中,我将“名称”和“描述”字段重置为其原始值。希望这可以帮助。