NullVoxPopuli/react-state-helpers

View on GitHub
src/state-wrapper.jsx

Summary

Maintainability
A
0 mins
Test Coverage
import React, { Component } from 'react';

import { withValue } from './withValue';
import { findValue } from './findValue';
import { mutCreator } from './mut';
import { toggleCreator } from './toggle';
import { handleSubmit } from './handleSubmit';
import { setWrappingStateCreator } from './setWrappingState';

// Higher-Order-Component for adding all the functionality of
// react-state-helpers to a component
export function stateWrapper(WrappedComponent) {
  return class extends Component {
    constructor(props) {
      super(props);

      this.state = {
        stateHelpers: {
          mut: mutCreator(this),
          toggle: toggleCreator(this),
          withValue,
          findValue,
          handleSubmit,
          setWrappingState: setWrappingStateCreator(this),
        },
      };
    }

    render() {
      const props = {
        ...this.state.stateHelpers,
        ...this.props,
        values: this.state,
      };

      return <WrappedComponent {...props} />;
    }
  };
}