import React from 'react'; const withToggle = (stateName = 'open', handlerName = 'switchOpen', initial = false) => BaseComponent => class extends React.Component { state = { toggle: initial, }; onToggle = state => this.setState({ toggle: typeof state === 'boolean' ? state : !this.state.toggle, }) render() { const newProps = { [ handlerName ]: this.onToggle, [ stateName ]: this.state.toggle, }; return ; } }; export default withToggle;