Hoc example
import { Component } from 'React';
export function enhancer() {
return (BaseComponent) => {
return class extends Component {
constructor() {
this.state = { visible: false };
}
componentDidMount() {
this.setState({ visible: true });
}
render() {
return <BaseComponent {...this.props} {...this.state} />;
}
}
};
}
// Presentational component
function Sample({ visible }) {
return visible ? <div> I am Visible </div> : <div> I am not Visible </div>
}
export default enhance()(Sample);