Home Reference Source

src/core/dependencies/withRegisterDependency.js

import React from 'react';
import { registerFieldDependency } from '../../actions/formPlugin';
import { connect } from 'react-redux';

export default Component => {
  class DependencyContainer extends React.Component {
    constructor(props) {
      super(props);
      this.initIfNeeded();
    }

    /**
     * Регистрация дополнительных свойств поля
     */
    initIfNeeded() {
      const { dependency } = this.props;
      if (dependency) {
        this.registerDependency();
      }
    }

    registerDependency() {
      const { id, form, dependency, registerFieldDependency } = this.props;
      registerFieldDependency(form, id, dependency);
    }

    render() {
      return <Component {...this.props} />;
    }
  }
  const mapDispatchToProps = dispatch => {
    return {
      registerFieldDependency: (form, id, dependency) =>
        dispatch(registerFieldDependency(form, id, dependency)),
    };
  };

  return connect(
    null,
    mapDispatchToProps
  )(DependencyContainer);
};