Render props enable flexible component composition through function children. Here's how to use them effectively.
Basic Render Props
Children as Function
Data Fetching
Toggle Pattern
Form Handling
Window Size Tracker
Combining Multiple Render Props
Converting to Custom Hooks
Performance Optimization
Best Practices
Design:
✓ Keep render prop components focused
✓ Use TypeScript for type safety
✓ Provide sensible defaults
✓ Consider converting to hooks
Performance:
✓ Memoize render prop callbacks
✓ Avoid inline functions in render
✓ Keep state updates minimal
✓ Use useMemo for expensive renders
Patterns:
✓ Use children as function for cleaner JSX
✓ Export both hook and component
✓ Compose multiple render props
✓ Handle loading and error states
Avoid:
✗ Deeply nested render props
✗ Over-complicated state
✗ Missing error boundaries
✗ Ignoring performance
Conclusion
Render props enable flexible component composition by passing a function that receives data and returns JSX. While hooks have replaced many render prop use cases, the pattern remains valuable for certain scenarios. Consider providing both hook and render prop APIs for maximum flexibility.