Что такое Redux?
Redux - это библиотека javascript, которая используется для хранения состояния. мы можем назвать его приложением для управления состоянием. Другими словами, мы можем сказать, что он отвечает за управление состояниями вашего приложения в одном месте, вы можете изменить состояние, когда вам нужно, только передав действие.
Простым языком объяснение было бы -
У Redux есть одно хранилище, в котором мы будем хранить все наше состояние, и вы можете передать любое действие из своего приложения, которое сообщает о сохранении этого изменения состояния на основе действия.
Как правило, это зависит от этих 4 шагов, теперь мы рассмотрим каждый шаг и узнаем, что это такое -
- Магазин
- Редуктор
- Подпишитесь
- Отправка
Во-первых, нам нужно настроить проект React, мы сделаем это с помощью response-create-app.
npx create-react-app <repo_name> cd my-app npm start
Чтобы запустить только что созданное приложение-реакцию, вам нужно сделать npm start
.
Чтобы лучше понять, вы можете подписаться на https://github.com/facebook/create-react-app
Теперь вам нужно установить Redux, он доступен на npm, поэтому вы можете просто установить оттуда, используя:
npm install --save redux
И у вас есть готовое приложение для реакции с redux.
Давайте подробно рассмотрим шаги, упомянутые ранее.
1. Создать магазин:
У одного приложения может быть только один магазин. Для создания магазина вам необходимо импортировать createStore из redux.
import {createStore} from “redux”;
const store = createStore(reducer, state);
createStore использует редуктор и состояние (начальное состояние) в качестве параметра и возвращает хранилище со всеми состояниями приложения.
2. Редуктор:
Редуктор - это не что иное, как чистая функция javascript, которая принимает старое состояние и действие в качестве параметра и возвращает новое состояние, основанное на этом конкретном действии. Мы не должны изменять экземпляр состояния мутации, мы должны возвращать новую копию состояния.
const reducer = (state = true, action) => { if (action.type === "MAKE_IT_FALSE") { return false; } return state; };
3. Подпишитесь:
Когда магазин изменяется, срабатывает функция обратного вызова `store.subscribe ()`. И getState используется для возврата всех состояний приложения.
store.subscribe(() => { console.log(“ hello”, store.getState()); //when state is changing calling this. });
В реальных приложениях мы не должны использовать подписку, потому что в этом случае нам придется вручную передать хранилище в другие компоненты, что затруднительно, поэтому react-redux предоставляет нам поставщика, который используется для упаковки вашего приложения и полностью передает магазин.
<Provider store={store}><App/></Provider>
4. Отправка:
Dispatch передает через ваше приложение действие, которое сообщает магазину, какое состояние нам нужно обновить. Обычно с помощью действия мы отправляем некоторую информацию из вашего приложения в хранилище. Это единственный способ поменять магазин.
Действие: - это часть информации, которая будет отправлена через ваше приложение в хранилище.
const todo = MAKE_IT_FALSE
store.dispatch({ type: “REACT”, value: “ lets learn react” });
Предлагаю вам пример, который включает в себя все 4 шага, о которых мы узнали выше.
import React from "react"; import { createStore } from "redux"; class ReduxStore extends React.Component { render() { // Step-2 create reducer (state, action) const reducer = (state, action) => { if (action.type === "REACT") { return action.value; } return state; }; // step-1 create the store (reducer, state) const store = createStore(reducer, "JS"); // step-3 create subscription store.subscribe(() => { //when state is changing calling this. console.log("-->hello", store.getState()); }); // step-4 dispatch an action store.dispatch({ type: "REACT", value: " lets learn react" }); return null; } } export { ReduxStore };
Https://gist.github.com/shreyaa1/63f2bf96e4d0f7f6aeb1ebbf687c7e9a
На данный момент это все для Redux. Приветствуются любые дополнительные вопросы или разъяснения, вы можете либо прокомментировать их ниже, либо связаться со мной через мои ссылки в социальных сетях из моего профиля.