In React, Render Props is a technique used to share logic between components using a function prop. Instead of using children
or composition, a function is passed as a prop to render content dynamically. This approach works well with functional components and hooks.
Here’s an example of how to implement Render Props with functional components:
Example
import React, { useState } from 'react';
// The component using render props
const MouseTracker = ({ render }) => {
const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });
const handleMouseMove = (event) => {
setMousePosition({
x: event.clientX,
y: event.clientY,
});
};
return (
<div style={{ height: '100vh' }} onMouseMove={handleMouseMove}>
{render(mousePosition)}
</div>
);
};
// Component that consumes the render props
const App = () => {
return (
<div>
<h1>Mouse Tracker</h1>
<MouseTracker render={({ x, y }) => (
<h2>Mouse Position: {x}, {y}</h2>
)}/>
</div>
);
};
export default App;
Explanation:
-
MouseTracker
is a functional component that takes arender
prop. - The
render
prop is a function that receives the mouse position and returns JSX. - The
App
component passes a function as therender
prop, which displays the mouse'sx
andy
coordinates.
This pattern allows for more flexibility in deciding how to render content based on logic inside the MouseTracker
component.
Top comments (0)