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