Redux Toolkit ist eine offizielle, eigenwillige und leistungsstarke Bibliothek, die den Prozess der Einrichtung von Redux in Ihren Anwendungen vereinfacht. Obwohl Redux äußerst leistungsstark ist, kann es eine Menge Standardcode erfordern, um die Zustandsverwaltung, Aktionserstellung und Reduzierungen zu verwalten. Redux Toolkit (RTK) soll die Redux-Entwicklung einfacher und effizienter machen, indem es eine Reihe von Hilfsfunktionen bereitstellt, die häufige Aufgaben vereinfachen.
Mit Redux Toolkit können Sie Stores präziser und organisierter konfigurieren, Reduzierer schreiben und Aktionen definieren. Es enthält auch einige Standardeinstellungen, die Entwicklern helfen, häufige Fehler und Standardcode zu vermeiden.
Redux Toolkit ist die offizielle, empfohlene Bibliothek zum strukturierteren, prägnanteren und benutzerfreundlicheren Schreiben von Redux-Logik. Es trägt dazu bei, den Bedarf an sich wiederholendem Code zu eliminieren, indem es Dienstprogramme bereitstellt, die die Komplexität von Redux-Setups reduzieren, wie z. B. die automatische Verarbeitung unveränderlicher Statusaktualisierungen und die Vereinfachung von Aktionserstellern und -reduzierern.
Redux Toolkit bietet mehrere integrierte Funktionen und Dienstprogramme zur Optimierung der Redux-Nutzung:
configureStore vereinfacht die Store-Konfiguration, indem es automatisch wichtige Middleware wie Redux-Thunk für asynchrone Aktionen hinzufügt und Redux DevTools zum Debuggen einrichtet.
import { configureStore } from '@reduxjs/toolkit'; import counterReducer from './counterSlice'; const store = configureStore({ reducer: { counter: counterReducer, }, }); export default store;
createSlice ist ein Dienstprogramm, das die Erstellung von Redux-Slices vereinfacht, die einen Teil des Redux-Zustands darstellen und sowohl Reduzierer als auch Aktionen enthalten.
import { createSlice } from '@reduxjs/toolkit'; const counterSlice = createSlice({ name: 'counter', initialState: { value: 0 }, reducers: { increment: (state) => { state.value += 1; // Direct mutation allowed due to immer.js under the hood }, decrement: (state) => { state.value -= 1; }, incrementByAmount: (state, action) => { state.value += action.payload; } } }); export const { increment, decrement, incrementByAmount } = counterSlice.actions; export default counterSlice.reducer;
createAsyncThunk ist ein Tool zum Umgang mit asynchroner Logik, z. B. zum Abrufen von Daten von einer API und deren Integration in Ihren Redux-Status. Es generiert eine Reihe von Aktionserstellern (Status „Ausstehend“, „Erfüllt“ und „Abgelehnt“), um den asynchronen Fluss zu verwalten.
import { configureStore } from '@reduxjs/toolkit'; import counterReducer from './counterSlice'; const store = configureStore({ reducer: { counter: counterReducer, }, }); export default store;
createEntityAdapter ist ein Dienstprogramm zum Verwalten normalisierter Daten in Redux. Es hilft Ihnen, Datensammlungen, wie z. B. Artikellisten, effizient zu verwalten.
import { createSlice } from '@reduxjs/toolkit'; const counterSlice = createSlice({ name: 'counter', initialState: { value: 0 }, reducers: { increment: (state) => { state.value += 1; // Direct mutation allowed due to immer.js under the hood }, decrement: (state) => { state.value -= 1; }, incrementByAmount: (state, action) => { state.value += action.payload; } } }); export const { increment, decrement, incrementByAmount } = counterSlice.actions; export default counterSlice.reducer;
RTK reduziert die Menge an Boilerplate-Code, die zum Einrichten von Redux erforderlich ist, erheblich. Anstatt Aktionstypen, Aktionsersteller und -reduzierer manuell zu schreiben, können Sie jetzt createSlice verwenden, um alles automatisch zu generieren.
RTK verwendet unter der Haube Immer.js, was es Ihnen ermöglicht, „mutativen“ Code in Ihre Reduzierer zu schreiben. Immer stellt jedoch sicher, dass der Zustand unveränderlich bleibt, indem es automatisch Kopien des Zustands erstellt und Mutationen auf diese anwendet.
Durch die automatische Konfiguration von Middleware wie redux-thunk und die Integration mit Redux DevTools erleichtert Redux Toolkit das Debuggen und Überwachen Ihres Redux-Status. Sie können auch problemlos Tools wie TypeScript verwenden, da RTK eine hervorragende Unterstützung für die Typsicherheit bietet.
Die Funktion „createAsyncThunk“ hilft bei der Verwaltung komplexer asynchroner Logik und integriert diese nahtlos in Ihren Redux-Status, wodurch die Komplexität der Verwaltung asynchroner Vorgänge verringert wird.
RTK bietet Dienstprogramme wie createEntityAdapter für die Verarbeitung normalisierter Daten. Dies ist besonders nützlich für die Verwaltung großer Datenmengen (z. B. Listen von Benutzern, Produkten usw.) in Redux.
Hier ist eine grundlegende Anleitung zum Einrichten des Redux Toolkits in einer React-App.
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit'; export const fetchData = createAsyncThunk( 'data/fetchData', async (url) => { const response = await fetch(url); return response.json(); } ); const dataSlice = createSlice({ name: 'data', initialState: { items: [], status: 'idle' }, reducers: {}, extraReducers: (builder) => { builder .addCase(fetchData.pending, (state) => { state.status = 'loading'; }) .addCase(fetchData.fulfilled, (state, action) => { state.status = 'succeeded'; state.items = action.payload; }) .addCase(fetchData.rejected, (state) => { state.status = 'failed'; }); } }); export default dataSlice.reducer;
Verwenden Sie createSlice, um Ihr Redux-Slice zu definieren, das sowohl die Aktionen als auch die Reduzierungen für einen bestimmten Zustandsabschnitt enthält.
import { createEntityAdapter, createSlice } from '@reduxjs/toolkit'; const usersAdapter = createEntityAdapter(); const usersSlice = createSlice({ name: 'users', initialState: usersAdapter.getInitialState(), reducers: { addUser: usersAdapter.addOne, removeUser: usersAdapter.removeOne, } }); export const { addUser, removeUser } = usersSlice.actions; export default usersSlice.reducer;
Als nächstes konfigurieren Sie den Redux-Store mit configureStore.
import { configureStore } from '@reduxjs/toolkit'; import counterReducer from './counterSlice'; const store = configureStore({ reducer: { counter: counterReducer, }, }); export default store;
Umschließen Sie Ihre App mit der Provider-Komponente von React-Redux, um den Redux-Store in Ihrer gesamten Anwendung verfügbar zu machen.
import { createSlice } from '@reduxjs/toolkit'; const counterSlice = createSlice({ name: 'counter', initialState: { value: 0 }, reducers: { increment: (state) => { state.value += 1; // Direct mutation allowed due to immer.js under the hood }, decrement: (state) => { state.value -= 1; }, incrementByAmount: (state, action) => { state.value += action.payload; } } }); export const { increment, decrement, incrementByAmount } = counterSlice.actions; export default counterSlice.reducer;
Redux Toolkit vereinfacht die Arbeit mit Redux, indem es Boilerplate-Code entfernt und Hilfsfunktionen wie createSlice, createAsyncThunk und configureStore anbietet. Durch die Verwendung von RTK können sich Entwickler auf die Kernlogik der Anwendung konzentrieren, ohne sich um die Komplexität der Redux-Konfiguration kümmern zu müssen.
Mit RTK können Sie sowohl den synchronen als auch den asynchronen Zustand effizienter und wartbarer verwalten, was es zu einer großartigen Wahl für größere React-Anwendungen macht.
Das obige ist der detaillierte Inhalt vonBeherrschen des Redux-Toolkits: Vereinfachen Sie die Statusverwaltung in Ihrer React-App. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!