Skip to content

Instantly share code, notes, and snippets.

@rmbrntt
Created October 16, 2018 15:53
Show Gist options
  • Save rmbrntt/f582e293cad40c36256568bdf1f54217 to your computer and use it in GitHub Desktop.
Save rmbrntt/f582e293cad40c36256568bdf1f54217 to your computer and use it in GitHub Desktop.
React Hoverable Render props example
import React, {Component} from 'react';
class Hoverable extends Component {
constructor() {
super();
this.state = {
isMouseInside: false,
};
}
mouseEnter = () => {
this.setState({isMouseInside: true});
};
mouseLeave = () => {
this.setState({isMouseInside: false});
};
render() {
return this.props.children(
this.state.isMouseInside,
this.mouseEnter,
this.mouseLeave,
);
}
}
const HoverableElement = (props) => (
<Hoverable>
{(isMouseInside, mouseEnter, mouseLeave) => (
<div className="menu-item">
<div onMouseEnter={mouseEnter} onMouseLeave={mouseLeave}>
<h2>{props.title}</h2>
</div>
{isMouseInside && props.children}
</div>
)}
</Hoverable>
);
class HoverableElementsList extends Component {
render() {
return (
<div>
<HoverableElement title="First Menu">
<p>Some children content</p>
</HoverableElement>
</div>
);
}
}
export {HoverableElement, HoverableElementsList};
export default Hoverable;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment