Redux Toolkit: createSlice en configureStore
Definieer stateslices met createSlice, combineer ze in configureStore en dispatch actions vanuit React-componenten met useDispatch en useSelector.
Redux Toolkit: createSlice en configureStore is een gratis Frontend Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Frontend Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Frontend Academy bevat in totaal 4 lessen.
Waarom Redux Toolkit?
Redux Toolkit (RTK) is de officiële, eigenzinnige manier om Redux-logica te schrijven. Het verwijdert de overbodige basiscode van gewone Redux: geen handmatige tekenreeksen voor actietypen, geen uitgebreide reducers en geen ingewikkelde configuratie van de store.
Redux Toolkit installeren
Installeer zowel RTK als de React-koppeling.
npm install @reduxjs/toolkit react-reduxcreateSlice — Status, reducer en acties
createSlice maakt in één aanroep een statusdeel met de bijbehorende reducer en functies die acties aanmaken. Onder de motorkap gebruikt het Immer voor onveranderlijke updates.
import { createSlice } from '@reduxjs/toolkit';
const counterSlice = createSlice({
name: 'counter',
initialState: { value: 0 },
reducers: {
increment: state => { state.value++; }, // Immer: mutate directly
decrement: state => { state.value--; },
reset: state => { state.value = 0; },
incrementBy: (state, action) => { state.value += action.payload; }
}
});
export const { increment, decrement, reset, incrementBy } = counterSlice.actions;
export default counterSlice.reducer;configureStore — De store samenstellen
configureStore maakt de Redux-store met verstandige standaardinstellingen: Redux DevTools is ingeschakeld en thunk-middleware is inbegrepen.
import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterSlice';
import cartReducer from './cartSlice';
export const store = configureStore({
reducer: {
counter: counterReducer,
cart: cartReducer,
}
});
// TypeScript types:
export type RootState = ReturnType<typeof store.getState>;
export type AppDispatch = typeof store.dispatch;De store beschikbaar maken
Wikkel je app in <Provider store={store}> uit react-redux.
import { Provider } from 'react-redux';
import { store } from './store';
ReactDOM.createRoot(document.getElementById('root')!).render(
<Provider store={store}>
<App />
</Provider>
);useSelector — Status lezen
useSelector(selector) leest uit de store. De component wordt opnieuw gerenderd wanneer het geselecteerde statusdeel verandert.
import { useSelector } from 'react-redux';
import type { RootState } from './store';
function Counter() {
const count = useSelector((state: RootState) => state.counter.value);
return <p>Count: {count}</p>;
}useDispatch — Acties verzenden
useDispatch() geeft de dispatchfunctie van de store terug. Roep die aan met een functie die een actie aanmaakt om een statuswijziging te activeren.
import { useDispatch } from 'react-redux';
import { increment, incrementBy } from './counterSlice';
function Controls() {
const dispatch = useDispatch();
return (
<div>
<button onClick={() => dispatch(increment())}>+1</button>
<button onClick={() => dispatch(incrementBy(5))}>+5</button>
</div>
);
}createAsyncThunk — Asynchrone acties
RTK's createAsyncThunk handelt asynchrone bewerkingen, zoals API-aanroepen, af en verzendt automatisch acties voor pending, fulfilled en rejected.
import { createAsyncThunk } from '@reduxjs/toolkit';
export const fetchUser = createAsyncThunk(
'user/fetchById',
async (userId: string) => {
const res = await fetch(`/api/users/${userId}`);
return res.json(); // becomes action.payload on fulfilled
}
);
// In slice:
extraReducers: (builder) => {
builder
.addCase(fetchUser.pending, state => { state.loading = true; })
.addCase(fetchUser.fulfilled, (state, action) => {
state.loading = false;
state.user = action.payload;
});
}RTK Query — Ingebouwd gegevens ophalen
RTK Query, dat deel uitmaakt van RTK, biedt automatisch ophalen, cachen en ongeldig maken van gegevens. Definieer API-eindpunten en krijg gegenereerde hooks.
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
export const api = createApi({
baseQuery: fetchBaseQuery({ baseUrl: '/api' }),
endpoints: (build) => ({
getUsers: build.query<User[], void>({ query: () => 'users' }),
})
});
// Generated hook:
const { data, isLoading, error } = api.useGetUsersQuery();Immer in reducers
RTK gebruikt intern Immer, waardoor slice-reducers de status rechtstreeks kunnen wijzigen. Immer detecteert wijzigingen en maakt een nieuw onveranderlijk statusobject — je krijgt het gebruiksgemak van mutaties met de veiligheid van onveranderlijkheid.
Redux DevTools
Met de browserextensie Redux DevTools kun je elke verzonden actie en de resulterende status inspecteren en zelfs teruggaan in de tijd: spring naar elke eerdere status. Onmisbaar voor het opsporen van fouten in complexe statusstromen.
Snelle controle
Wat genereert createSlice in Redux Toolkit automatisch?
Terugblik: Redux Toolkit
createSlice combineert reducer en acties in één definitie. Met Immer kun je de status veilig 'wijzigen'. configureStore stelt reducers samen met DevTools en thunk. useSelector leest de status. useDispatch verzendt acties. createAsyncThunk is bedoeld voor asynchrone stromen. RTK Query verzorgt het volledig ophalen van gegevens met caching.
Leer HTML met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 41
- Lessen
- 163
Veelgestelde vragen
Is de les “Redux Toolkit: createSlice en configureStore” gratis?
Ja — de volledige tekst van “Redux Toolkit: createSlice en configureStore” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Frontend Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Frontend Academy bevat in totaal 4 lessen.
Wat leer ik in “Redux Toolkit: createSlice en configureStore”?
Definieer stateslices met createSlice, combineer ze in configureStore en dispatch actions vanuit React-componenten met useDispatch en useSelector. Je oefent met Frontend Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Frontend Academy te beginnen?
Ervaring vooraf is niet nodig. Frontend Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “Redux Toolkit: createSlice en configureStore”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Frontend Academy?
Ja. Elke les over Frontend Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Redux Toolkit: createSlice en configureStore
- Zustand voor lichte React-state
- Pinia voor Vue: defineStore en storeToRefs
- Wanneer globale versus lokale state gebruiken