Redux широко известен как надежная библиотека управления состоянием, разработанная специально для приложений JavaScript и часто используемая в тандеме с популярным фреймворком React. Предлагая надежный контейнер состояний, Redux закладывает прочную основу, которая значительно упрощает задачу обработки состояний приложения и устранения неполадок. В этом руководстве глубоко рассматриваются фундаментальные компоненты, составляющие Redux, предоставляя подробные объяснения каждого элемента и иллюстрируя, как они синергетически взаимодействуют для оптимизации общей функциональности приложения. Это углубленное исследование направлено на разъяснение внутренней работы Redux, позволяя разработчикам понять тонкости этого инструмента управления состоянием и эффективно использовать его возможности в своих проектах.
Redux следует модели однонаправленного потока данных и основан на трех основных принципах:
Сначала установите Redux и React-Redux:
npm install redux react-redux @reduxjs/toolkit
Эта команда устанавливает основную библиотеку Redux, привязки React для Redux и набор инструментов Redux, который упрощает многие распространенные задачи, такие как настройка хранилища и создание фрагментов.
Действия — это полезные данные, которые отправляют данные из вашего приложения в ваш магазин Redux. Типы действий — это константы, представляющие действие.
export const INCREMENT = "INCREMENT"; export const DECREMENT = "DECREMENT"; export const INCREMENT_BY_VALUE = "INCREMENT_BY_VALUE"; export const RESET = "RESET"; export const increment = () => ({ type: INCREMENT }); export const decrement = () => ({ type: DECREMENT }); export const incrementByValue = (value) => ({ type: INCREMENT_BY_VALUE, payload: value, }); export const reset = () => ({ type: RESET });
Четкое определение действий и типов действий помогает поддерживать согласованность и снижает количество ошибок в вашем приложении.
Редукторы определяют, как изменяется состояние приложения в ответ на действия, отправленные в хранилище. Срезы — это набор логики и действий редуктора Redux для одной функции вашего приложения, созданный с использованием метода createSlice Redux Toolkit.
import { createSlice } from "@reduxjs/toolkit"; const initialState = { number: 0 }; const counterSlice = createSlice({ name: "counter", initialState, reducers: { increment: (state) => { state.number = 5; }, decrement: (state) => { state.number = Math.max(0, state.number - 5); }, incrementByValue: (state, action) => { state.number = action.payload; }, reset: (state) => { state.number = 0; }, }, }); export const { increment, decrement, incrementByValue, reset } = counterSlice.actions; export default counterSlice.reducer;
Чтобы объединить несколько фрагментов:
import { combineReducers } from "@reduxjs/toolkit"; import counterReducer from "../slices/counterSlice"; const rootReducer = combineReducers({ counter: counterReducer, }); export default rootReducer;
Магазин — это объект, который объединяет действия и редукторы. Он хранит состояние приложения, разрешает доступ к нему через getState(), обновляет его через диспетчеризацию (действие) и регистрирует прослушиватели через подписку (прослушиватель).
import { configureStore } from "@reduxjs/toolkit"; import rootReducer from "../reducers/rootReducer"; const store = configureStore({ reducer: rootReducer, }); export default store;
Чтобы подключить компоненты React к хранилищу Redux, используйте компонент Provider из реакции-redux, чтобы передать хранилище вашим компонентам, и используйте перехватчики useSelector и useDispatch для доступа к состоянию и управления им.
import React from "react"; import { Provider } from "react-redux"; import store from "./redux/store/store"; import Counter from "./components/Counter"; import MusCo from "./MusCo redux logo.png"; function App() { return (); } export default App; Practice Redux with MusCo
by Mustafa Coskuncelebi
import { useDispatch, useSelector } from "react-redux"; import { decrement, increment, incrementByValue, reset, } from "../slices/counterSlice"; import { useState, useEffect } from "react"; function Counter() { const [value, setValue] = useState(""); const dispatch = useDispatch(); const number = useSelector((state) => state.counter.number); useEffect(() => { const showcase = document.querySelector("#showcase"); if (numberCounter
{number}
{ let newValue = e.target.value.trim(); if (newValue === "") { newValue = ""; reset(); } if (/^\d*$/.test(newValue)) { setValue(newValue); } }} value={value} placeholder="Enter Value" />Counter cannot be less than 0
); } export default Counter;
Redux — это мощная библиотека для управления состоянием ваших приложений. Понимая действия, редукторы, хранилище и способы подключения всего к вашим компонентам React, вы можете создавать предсказуемые и удобные в обслуживании приложения.
Для получения дополнительной информации ознакомьтесь с официальной документацией Redux:
Следуя этому руководству, вы должны иметь четкое представление о Redux и уметь реализовать его в своих собственных приложениях.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3