【问题标题】:Easy Way To Access change() from redux-form in react-admin?在 react-admin 中从 redux-form 访问 change() 的简单方法?
【发布时间】:2018-07-18 17:23:07
【问题描述】:

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

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

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

我试过从道具上捡起来,但是没有;

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

【问题讨论】:

  • 你尝试了什么?
  • 围绕“@@redux-form/CHANGE”操作写一个传奇怎么样?
  • 会检查的
  • 你解决了吗?如果是这样,您可以发布答案吗?谢谢。
  • Redux-saga 可以解决它,但我还没有回到这个问题。

标签: reactjs react-admin


【解决方案1】:

我不确定这是否是您要查找的内容,但这就是我在 react-admin 项目中处理它的方式。我只是直接从redux-form 导入change,然后将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 应该会自动从SimpleForm 接收一个record 属性。另外,我将它连接到 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
}

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

【讨论】:

  • 谢谢!此外,如果您要在同一个处理程序中提交带有handleSubmitWithRedirect 的表单,您可以使用await dispatch(change(REDUX_FORM_NAME, ....
猜你喜欢
  • 2019-07-27
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-03
  • 2019-07-01
  • 2020-11-16
  • 2015-08-09
相关资源
最近更新 更多