UNPKG

@wordpress/compose

Version:
42 lines (36 loc) 910 B
/** * WordPress dependencies */ import { Component } from '@wordpress/element'; /** * Internal dependencies */ import createHigherOrderComponent from '../../utils/create-higher-order-component'; /** * A Higher Order Component used to provide and manage internal component state * via props. * * @param {?Object} initialState Optional initial state of the component. * * @return {WPComponent} Wrapped component. */ export default function withState( initialState = {} ) { return createHigherOrderComponent( ( OriginalComponent ) => { return class WrappedComponent extends Component { constructor() { super( ...arguments ); this.setState = this.setState.bind( this ); this.state = initialState; } render() { return ( <OriginalComponent { ...this.props } { ...this.state } setState={ this.setState } /> ); } }; }, 'withState' ); }