Frontend Academy · Les

Redux Toolkit: createSlice en configureStore

Definieer stateslices met createSlice, combineer ze in configureStore en dispatch actions vanuit React-componenten met useDispatch en useSelector.

Les 1 van 413 stappen

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-redux

createSlice — 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.

Gratis beginnen

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

  1. Redux Toolkit: createSlice en configureStore
  2. Zustand voor lichte React-state
  3. Pinia voor Vue: defineStore en storeToRefs
  4. Wanneer globale versus lokale state gebruiken
← Terug naar Frontend Academy