Вы, вероятно, хотите использовать context вместо любого из них.Из этой документации:
Контекст предназначен для совместного использования данных, которые можно считать «глобальными» для дерева компонентов React, таких как текущий аутентифицированный пользователь, тема или предпочитаемый язык.
Определенно не используйте глобальные переменные.Глобальное пространство имен невероятно заполнено, и добавление к нему, как правило, не лучшая практика.Если бы вы использовали для этого глобальный объект, я бы рекомендовал использовать только один, и он должен ссылаться на объект со свойствами для различных фрагментов информации, которыми вы хотите поделиться.Обратите внимание, что они будут привязаны к конкретному окну.
Одна из причин, по которой стоит рассмотреть возможность использования sessionStorage
(или, возможно, периодическую синхронизацию контекста React с ним), если вы хотите, чтобы изменения в одном окне отражались в другом окне.,Два окна / вкладки из одного источника совместно используют один и тот же sessionStorage
и могут получить событие (storage
), когда другое изменяет это хранилище.Таким образом, если бы глобальная информация была темой приложения (скажем, светлая или темная), изменение ее на одной вкладке также может повлиять на другую вкладку, если вы ответите на событие storage
, обновив свой контекст React.Обратите внимание, что sessionStorage
(и localStorage
) хранит только строки , поэтому обычно нужно преобразовать в JSON при хранении (JSON.stringify
) и из JSON при загрузке (JSON.parse
).