acdlite/flummox

View on GitHub
src/addons/connectToStores.js

Summary

Maintainability
A
0 mins
Test Coverage
/**
 * Higher-order component form of connectToStores
 */

import React from 'react';
import { instanceMethods, staticProperties } from './reactComponentMethods';
import assign from 'object-assign';

export default (BaseComponent, stores, stateGetter) => {
  const ConnectedComponent = class extends React.Component {
    constructor(props, context) {
      super(props, context);

      this.initialize();

      this.state = this.connectToStores(stores, stateGetter);
    }

    render() {
      return <BaseComponent {...this.state} {...this.props} />;
    }
  };

  assign(
    ConnectedComponent.prototype,
    instanceMethods
  );

  assign(ConnectedComponent, staticProperties);

  return ConnectedComponent;
};