Render props is a pattern for sharing code between components using a prop whose value is a function.
Basic Render Props
Using Children as Render Prop
Functional Component Version
Data Fetching Pattern
Toggle Pattern
Form State Pattern
List Rendering Pattern
Downshift-style Pattern
Render Props vs Hooks
Best Practices
When to Use Render Props:
✓ Cross-cutting concerns
✓ Reusable stateful logic
✓ Flexible component composition
✓ When hooks aren't an option
Pattern Guidelines:
✓ Use children as function for cleaner JSX
✓ Provide sensible defaults
✓ Document the render prop API
✓ Memoize callbacks when needed
Performance:
✓ Avoid creating functions in render
✓ Use useCallback for stable references
✓ Consider React.memo for children
✓ Profile before optimizing
Prefer Hooks When:
✓ Logic can be extracted as hook
✓ No wrapper element needed
✓ Multiple consumers in same component
✓ Simpler composition
Conclusion
Render props enable flexible component composition by passing rendering logic as a function prop. While hooks have largely replaced render props for sharing logic, the pattern remains useful for component libraries and specific use cases where flexible rendering is needed. Use children as a function for cleaner syntax, and consider converting to hooks when the logic doesn't require rendering flexibility.