Presentational/Container have long been suggested as terms to describe two different classes of React components. However I think these terms are a bit deceptive, and don't accurately represent the differences between them:
- can "contain" other components, thus they also act as containers
- not concerned merely with "presentation" (in the same way that CSS is)
- do more than simply "contain" other components. Containing other components is not what makes them unique
- have an active role in accessing and mutating the state of your application. This is what differentiates them from "presentational" components.
I find the concepts of Container/Presentational components very useful, but also think that Active/Passive are better terms for describing the differences:
- Are concerned with how things work/behave
- Interact with the store(s) for accessing your application's state
- Act on your app state by launching actions
- Can have changing state
- Only responsible for rendering UI as a function of props
- "Do what they're told" by their Active ancestors in the tree
- Are not stateful