๐ฆ Render Props Pattern in React
Render Props is a pattern in React where a component accepts a function as a prop and calls it to determine what to render. It helps in sharing logic between components using a reusable wrapper.
๐ก 1. What is a Render Prop?
A render prop
is a function prop that returns JSX. The parent component provides rendering logic via this function.
๐งช 2. Example: Mouse Tracker
class MouseTracker extends React.Component {
state = { x: 0, y: 0 };
handleMouseMove = (e) => {
this.setState({ x: e.clientX, y: e.clientY });
};
render() {
return (
<div style={{ height: '100px' }} onMouseMove={this.handleMouseMove}>
{this.props.render(this.state)}
</div>
);
}
}
โ๏ธ 3. Usage Example
function App() {
return (
<MouseTracker render={({ x, y }) => (
<h2>Mouse position: ({x}, {y})</h2>
)} />
);
}
โ 4. Why Use Render Props?
- Encapsulates reusable logic (like state or effects)
- Flexible rendering with full control in consumer
- Better alternative to HOCs in some cases
๐ง 5. Modern Alternatives
- React Hooks are now preferred for most use cases
- Still useful for class-based components or controlled rendering
๐ Tips
- Name your render prop consistently (e.g.
render
orchildren
) - Use prop drilling or context to pass additional shared state