Redux форма с compose не работает ошибка выкидывания - PullRequest
0 голосов
/ 22 декабря 2018

При использовании неизменяемой формы реаги-редукса, когда я пытаюсь передать избыточную форму внутри редуктора, создаю ошибку «Вы должны передать компонент в функцию, возвращаемую соединением»

    import React from 'react';
    import { connect } from 'react-redux';
    import { compose } from 'redux';
    import { Field, reduxForm } from 'redux-form/immutable';";

    import makeSelectUser from "./selectors";
    import actionCreators from "./actions";

    class EditUser extends React.PureComponent {

    }

    const mapDispatchToProps = bindActionCreators;

    const mapStateToProps = makeSelectUser();

    const withConnect = connect(
      mapStateToProps,
      mapDispatchToProps(actionCreators)
    );

    export default compose(
      withConnect,
      reduxForm({
        destroyOnUnmount: false,
        enableReinitialize: true,
        keepDirtyOnReinitialize: true,
        form: 'EditUser'
      })
    )(EditUser);

ошибка получения

browser.js?40b6:38 Uncaught Error: You must pass a component to the function returned by connect. Instead received {"defaultProps":{"touchOnBlur":true,"touchOnChange":false,"persistentSubmitErrors":false,"destroyOnUnmount":false,"enableReinitialize":true,"keepDirtyOnReinitialize":true,"updateUnregisteredFields":false,"pure":true,"forceUnregisterOnUnmount":false,"form":"EditUser"}}

1 Ответ

0 голосов
/ 22 декабря 2018

Согласно Как мне mapStateToProps или mapDispatchToProps вам сначала нужно connect ваш компонент, а после этого передать его в reduxForm.

Так что вам нужно переключить порядокаргументов в compose:

export default compose(
  reduxForm({
    destroyOnUnmount: false,
    enableReinitialize: true,
    keepDirtyOnReinitialize: true,
    form: 'EditUser'
  }),      
  withConnect
)(EditUser);

Примечание compose - это

Функция, полученная путем составления функций аргумента справа налево.
Например, compose (f, g, h) идентично выполнению (... args) => f (g (h (... args)))

...