Почему React-Redux передает хранилище в контекст?

Почему response-redux передает хранилище в контекст React с помощью Provider за сценой, поскольку мы можем отправлять с помощью store.disptach и получать состояние с помощью store.getState, поэтому в основном все функции могут быть достигнуты без использования React.createContext. Я что-то упустил? или есть еще какие-то преимущества?

Спасибо

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Контекстный API React представляет собой легковесную систему внедрения зависимостей.. Как и в любой системе DI, значение состоит в том, чтобы избежать привязки вашей логики к конкретному экземпляру или реализации во время компиляции.

В частности, для React-Redux существует множество частей логики, подключенной к Redux, которые должны взаимодействовать с экземпляром хранилища некоторый Redux во время выполнения, но мы не знаем экземпляра хранилища который Redux, который будет в момент написания кода. Например:

  • Компоненты вашего приложения могут использовать известный экземпляр одноэлементного хранилища в реальном приложении, но вам необходимо на лету создавать уникальный экземпляр хранилища для каждого модульного теста: https://redux.js.org/recipes/writing-tests#connected-components
  • Вы можете публиковать компоненты, связанные с Redux, в виде библиотеки, и они, конечно, не могут знать, какое хранилище Redux будет использовать пользователь.

Таким образом, передача хранилища через контекст позволяет нам писать компоненты, которые взаимодействуют с хранилищем а, но нам все равно, что хранилище который есть. Это вводится во время выполнения.

В общем, не импортируйте хранилище Redux напрямую в свои компоненты (или другие файлы): https://redux.js.org/style-guide/style-guide#only-one-redux-store-per-app

Другие вопросы по теме