#Основы:

Redux — это контейнер предикативного состояния для приложений JS.

  • Redux Application ke State ko store karne me kaam aata h

Redux ki madad se hum state me jo transitions ho rahe h unko track kar sakte h и unko management kar sakte h

iske wajah se jo bhi changes hum application me karnege wo стабильные изменения honge

baki agar state ko hume предсказуемый способ, которым я управляю karna h toh redux ka use karna hota h

# Зачем нам нужен редукс?

давайте посмотрим на распределение компонентов в приложении:

теперь предположим, что состояние A -> B ko передает karna h в hume sabse pehle A component se state ko поднять karna parega в компонент C (родительский компонент), а затем waha se hum компонент Bмне мы указываем ko как реквизит use kar paayenge.

это то, что обычно происходит, когда состояние управляется без избыточности

поэтому сложное приложение агар кафи ч (компоненты джисме кафи сааре ч) к усме тарах се (родитель -> ребенок) переходы карна парега в йе кафи трудная хога

теперь, чтобы преодолеть это, мы используем REDUX

теперь saare заявляет hum redux store me store karnege to har компонент непосредственно redux store se hi state ko в качестве реквизита nikal sakte h для выпуска компонентов, поднимающих wala time bach jaayega

#Реагировать Редукс:

3 важные концепции REDUX:

  1. Магазин: приложение isme hum humare ke заявляет ko hold karte h
  2. Действие: isme humko jo bhi change karne h humare application me wo sab code karte h
  3. Reducers : ye action aur state ko в качестве параметра используйте karte h и jo bhi action hume Perform karna h используйте ye Perform karte h и укажите меня us action se jo bhi change honge wo karke state ko update karte h

поэтому в основном работа редуктора:

. работает над состоянием и действием

. выполнить действие

. обновить состояние

. вернуть обновленное состояние

Пример: создание базового приложения счетчика с использованием Redux

Har task ko karne ke yeh шаги ч

  1. Компонент для создания каро
  2. действия, определяющие каро

2. создатели действий ko banao

3. initalstate ko определяет каро

4. Редукционная функция ко лихо

5. сохрани мне редуктор ко пасс каро

6. состояние ko map karo props ke saath

7 . actionCreators ko map karo props ke saath с помощью dispatch()

8 . подключить HOC, посмотреть карту, выполнить функции ko export kar вместе с компонентом

9.теперь после этого ‹ Provider› ка используйте karna parega для того, чтобы подключить store к компоненту

теперь полный процесс создания этого счетчика с использованием избыточности

Шаг 1. Создание приложения-реакции

Шаг 2. Установка зависимостей

Шаг 3: создание компонента счетчика

Шаг 4: создание файла action.js

Шаг 5: создание создателей действий

Шаг 6: создание редуктора

шаг 7: создание магазина:

Шаг 8: завершение counter.js путем сопоставления состояния и отправки в реквизиты

Шаг 9: использование провайдера в App.js для подключения хранилища и компонента

встречное приложение [работает] :

Объяснение нескольких вещей сейчас:

  • ‹Provider: React Redux включает компонент <Provider />, который делает магазин Redux доступным для остальной части вашего приложения.
  • создать магазин :

синтаксис: createStore(reducer, [preloadedState], [enhancer]

[ предварительно загруженное состояние] : это полезно, если мы создаем страницу продукта, и продукт будет поступать из API, поэтому для первоначальной загрузки чего-либо на страницу мы можем передать что-то здесь.

[enhancer] : в этом промежуточном программном обеспечении гула ко передать kar sakte h с помощью функции applyMiddleware()

пример: регистратор (который используется для регистрации переходов состояний)

  • connect: функция подключает компонент React к хранилищу Redux.

# Модификация приложения счетчика с помощью полезной нагрузки:

Шаг 1. Добавьте полезную нагрузку в создателей действий.

в параметре функции стрелки укажите начальное состояние полезной нагрузки, а затем добавьте полезную нагрузку к объекту, который мы возвращаем

Шаг 2: добавьте action.payload в функцию редуктора, а также убедитесь, что изменения выполняются непосредственно в состоянии, мы распространяем состояние, а затем вносим изменения.

также здесь, чтобы отличить конкатенацию строк от сложения, нам нужно использовать parseFloat для выполнения арифметического сложения

шаг 3: теперь в компоненте создайте функцию useState taki hum ek поле ввода se data ko store karke as prop hum payload me bhej taki utne amount ke change ho

полная процедура для этого:

  • импортировать хук useState

  • создать государство

  • создайте поле ввода и usme onchange me hum value ko counter me store kara denge с помощью setCounter и target karne ke lie e.target.value ka use kar lenge

  • mile hue counter ko hum actioncreators me pass kar denge jaha humne payload ko number = 1 se инициализировать kia h в качестве базового случая

  • также hum mapStatetoProps и mapDispatchtoProps me bhi cnt ko pass kar denge, чтобы сопоставить его с реквизитом

. наконец мы видим, что:

# Использование нескольких редукторов:

приложение меня более чем один редуктор агар создать karnge для unko объединить karke привет гум использовать хранить меня использовать kar sakte h

Ищите метод combineReducer, используя karna h :

# React — Redux Hooks:

Используйте селекторный хук:

yeh аналогичный h mapStatetoProps ke iske madad se hum redux store se data ko fetch kar sakte h

ex :

const counter = useSelector((state) => state.counter)

Использовать Dispatch Hook:

Этот хук возвращает ссылку на функцию dispatch из хранилища Redux. Вы можете использовать его для отправки действий по мере необходимости.

константная диспетчеризация = useDispatch();

Промежуточное ПО #Logger :

монтаж :

npm я редукс-логгер

Применение :

с помощью функции applyMiddleware() мы можем использовать это

работающий :

Расширение #Redux Devtool:

Установка веб-браузера:

Установка пакета:

как подать заявку ? :

import { createStore, applyMiddleware } from 'redux';
import { composeWithDevTools } from 'redux-devtools-extension';

const store = createStore(reducer, composeWithDevTools(
  applyMiddleware(...middleware),
  // other store enhancers if any
));