Локальное состояние используется для данных, специфичных для одного компонента и не влияющих на другие части приложения. Примеры: состояние открытого/закрытого модального окна, содержимое поля ввода формы, состояние загрузки для конкретного элемента.
Глобальное состояние используется для данных, которые разделяются между несколькими компонентами и требуют централизованного управления. Примеры: данные пользователя после авторизации, корзина покупок, настройки темы приложения, состояние загрузки для всего приложения.
Выбор определяется тем, насколько широкой является область видимости данных и число компонентов, которые нуждаются в доступе и изменении этих данных. Глобальное состояние часто управляется библиотеками наподобие Redux, MobX или Context API. Использование локального состояния там, где достаточно этого, упрощает компоненты и повышает производительность. Использование глобального состояния для совместно используемых данных помогает избежать "проброса пропсов" (prop drilling) и упрощает управление состоянием на уровне приложения.