redux-form:排序 connect 和 reduxForm 调用 - 不能一起访问 store props 和 syncErrors

标签 redux-form

我有一个已经在这里讨论过的问题:
https://github.com/erikras/redux-form/issues/3424

我基本上有2个要求:

  • 我需要能够在 reduxForm 的 onSubmit 函数中通过 mapStateToProps 访问映射到我的组件中的一些 Prop 。
  • 我还想从 MyFormComponent 中的表单状态访问 syncErrors 值。这是为了例如总结错误。

  • 我尝试按如下方式完成此操作:

    const mapDispatchToProps = (state, ownProps) => ({
      data: state.dataFromServer // some data from the server
      syncErrors: getFormSyncErrors('myForm')(state),
    });
    
    const myFormSubmit = (values, dispatch, props) => {
      // need to access the data prop from above
    }
    
    const FormContainer =
      connect(
        mapStateToProps,
        mapDispatchToProps,
      )((reduxForm({
        form: 'myForm',
        onSubmit: myFormSubmit,
      })(MyFormComponent)));


    问题如下:

    如果我按上述方式订购(连接包装 reduxForm),我可以从 myFormSubmit 的商店访问我的 Prop ,但同步错误不会传递给 MyFormComponent,因此我无法访问它们。

    如果我切换顺序(reduxForm wraps connect),我可以访问 MyFormComponent 中的 syncErrors,但无法访问 myFormSubmit 函数内 store 中的 prop(因为它自然还没有被映射)。

    有关如何处理此问题的任何建议?

    我真的不想在 MyFormComponent 中这样做:Redux-form handleSubmit: How to access store state?

    最佳答案

    我认为用 connect 包装没有任何问题。两次:

    const addDataProp = state => ({
      data: state.dataFromServer // some data from the server
    });
    
    const addSyncErrorsProp = state => ({
        syncErrors: getFormSyncErrors('myForm')(state),
    });
    
    const FormContainer = connect(addDataProp)(
      reduxForm({
        form: 'myForm',
        onSubmit: myFormSubmit,
      })(
        connect(addSyncErrorsProp)(MyFormComponent)
      )
    );
    

    我不得不过度缩进上面的代码以使其更容易阅读:P 我建议您使用一些 compose() -like util 代替

    关于redux-form:排序 connect 和 reduxForm 调用 - 不能一起访问 store props 和 syncErrors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48533355/

    相关文章:

    javascript - 如何在 React 中渲染表单?

    javascript - Redux-form onChange 无法在表单上正确触发

    reactjs - 使用react-validation-mixin验证redux-form

    javascript - 在 React Native 中自动提交 Redux 表单

    reactjs - 如何在react类表单组件中检索当前的redux-form状态字段值?

    javascript - 在 Redux Form 中,如何设置复选框的选中属性的初始值?

    reactjs - 如何在 redux 表单中访问 redux 存储

    javascript - redux-form textarea 值不更新

    javascript - 嵌套 redux 表单字段以进行分组验证

    javascript - 针对不同提交类型的 Redux 表单验证