1. How to think about UI changes as state changes (Reacting to input with state)

2. How to structure state well (Choosing the state structure)

3. How to “lift state up” to share it between components (Sharing state between components)

4. How to control whether the state gets preserved or reset (Preserving and resetting state)

5. How to consolidate complex state logic in a function (Extracting state logic into a reducer)

6. How to pass information without “prop drilling” (Passing data deeply with context)

7. How to scale state management as your app grows (Scaling up with reducer and context)