A classic pattern separates data-fetching from rendering.
Presentational components:
- Receive data via props
- Focus on how things look
- No side effects
- Highly reusable
Container components:
- Fetch and manage data
- Pass data to presentational components
- Handle business logic
Modern approach: Hooks blur this line. You can fetch data inside any component. But the mental model remains useful: separate "what to show" from "where to get it."