![[Pasted image 20230704192112.png|]]

Redux - это библиотека для управления состоянием.

react-redux - библиотека, которая упрощает интеграцию между React и Redux .

Для создания проекта на Redux :

~ create-react-app MyName
~ npm start
 
npm i redux react-redux

В React рендеринг, действия ( actions) , логика ( reducer), state могут находиться в одном компоненте. Для управления состояниями Redux предоставляет одно глобальное место, которое доступно из любой его части называемое “хранилищем” store. Хранилище содержит состояние приложения и методы для его изменения.

Состояние в хранилище не может быть изменено напрямую, только через actions . Для отправки через actions состояний в store, используется метод store.dispatch() , который описывает, что произошло в приложении, вызывается reducer , который изменяет состояние приложения в соответствии с этим действием.

Без пакета react-redux в React приложениях выглядит не очень красиво.

Для использование store в компоненте вам необходимо передавать его в пропсы:

ReactDOM.render(<Main store={store} />, document.getElementById("root"))

И после использовать в компоненте: this.props.state. Для этого react-redux предоставляет метод Provider:

ReactDOM.render(
  <Provider store={store}>
    <Main />
  </Provider>,
  document.getElementById("root"),
)

Таким образом метод connect сможет использовать store. В противном случае вы получите ошибку: Error: Could not find «store» in the context of «Connect(Main)». Either wrap the root component in a , or pass a custom React context provider to and the corresponding React context consumer to Connect(Main) in connect options.

Также можно передать store напрямую в компонент, не оборачивая его в Provider и это будет работать. Но лучше всё-таки используйте Provider.

Redux имеет три основных принципа:

  • Единое состояние: Все состояние приложения хранится в единственном объекте-хранилище.
  • Неизменяемость: Состояние в хранилище не может быть изменено напрямую, только через создание нового состояния на основе старого.
  • Чистые функции: Редьюсеры, которые изменяют состояние в хранилище, должны быть чистыми функциями, то есть не иметь побочных эффектов и возвращать новое состояние на основе старого и действия.

Назад