Исходя из ваших комментариев, я вижу, что вы используете не библиотеку компонентов пользовательского интерфейса, а React Context API для предоставления темы и Redux для управления состоянием вашего приложения.
Стоит ли хранить мою тему в моем магазине?
Да. Поскольку вы уже используете Redux для обработки состояния приложения, нет необходимости смешивать и в React Context API. В противном случае вы решаете одну и ту же проблему дважды, и ваш код будет сложнее поддерживать. Вместо этого создайте объект, представляющий ваш пользовательский интерфейс, в вашем магазине Redux.
Это хороший способ иметь возможность изменить тему в любой части моего приложения?
Я бы не стал сильно беспокоиться об этом. Используете ли вы Redux или React Context API, оба предоставляют вам механизм чтения и обновления глобального состояния приложения из любой точки вашего приложения. Позже вы сможете решить, хотите ли вы, чтобы часть вашего глобального состояния приложения, которая обрабатывает пользовательский интерфейс, имела обработчики изменений; будь то с помощью редукторов Redux или потребителей Context API.
Не могли бы вы рассказать, как правильно организовать их распределение?
Посмотрите, как Material UI делает это. Нет лучшего руководства, чем фреймворк, который используется довольно широко.
Вернемся к первоначальному вопросу: «Почему не обновляется тема моего приложения?». Поскольку вы используете React Context API, вам нужно использовать потребительский компонент для обновления значения вашего провайдера. Ваш провайдер контекста уведомит дочерние компоненты об изменениях и выполнит повторную визуализацию. Этот лог c не запускается, если вы используете объект присвоения.