● Managing state with setState has become overly complicated
● State is shared between components that don’t have a parent/child relationship
● State changes are reflected outside the component where they are triggered,
or are paired with asynchronous functions
● Following how your state changes is opaque,
and a step-through/undo history is necessary to understand it
● Props are passed down the component tree liberally,
including through places they aren’t used