class WrapperComponent extends Component { constructor(props) { super(props); this.state = { handledMounted: false, }; this.refHandler = this.refHandler.bind(this); this.componentWillAppear = this.componentWillAppear.bind(this); } componentWillAppear() { if (this.instance) { if (!this.instance.componentWillAppear) { console.warn('You called connectFocus with a component that failed to implement componentWillAppear', this.instance); } else { this.instance.componentWillAppear(); } } } refHandler(c) { if (!this.instance) { this.instance = c.getWrappedInstance(); if (!this.state.handleMounted) { this.setState({ handleMounted: false, }); this.componentWillAppear(); } } } render() { return ( <WrappedComponent {...this.props} ref={this.refHandler} /> ); } }