javascript / intermediate
Snippet
Vollständiger Switch-Case-Kontrollfluss für Reducer-Zustandsübergänge
Eine switch-Anweisung steuert die Verzweigungsausführung basierend auf Action-Bezeichnern innerhalb von State-Reducer-Funktionen. Explizite case-Zweige in Kombination mit einem default-Zweig, der bei unbekannten Actions Fehler auslöst, stellen deterministische Zustandsmutationen sicher und decken Tippfehler sofort auf.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import React, { useReducer } from 'react';const initialState = { count: 0 };function counterReducer(state, action) {switch (action.type) {case 'increment':return { ...state, count: state.count + action.payload };case 'decrement':return { ...state, count: Math.max(0, state.count - action.payload) };case 'reset':return initialState;default:throw new Error(`Unhandled action type: ${action.type}`);}}export function CounterWidget() {const [state, dispatch] = useReducer(counterReducer, initialState);return (<div><p>Count: {state.count}</p><button onClick={() => dispatch({ type: 'increment', payload: 1 })}>+1</button><button onClick={() => dispatch({ type: 'decrement', payload: 1 })}>-1</button><button onClick={() => dispatch({ type: 'reset' })}>Reset</button></div>);}
react
Erklärung
1
switch (action.type) {
Wertet den Bezeichner action.type aus, um den auszuführenden Kontrollfluss-Zweig zu bestimmen.
2
case 'increment':
Behandelt den spezifischen Action-Typ und gibt ein neues Zustandsobjekt mit inkrementiertem Zähler zurück.
3
default:
Greift bei unbekannten Action-Typen, die keinem case-Block entsprechen.
4
throw new Error(`Unhandled action type: ${action.type}`);
Löst zur Laufzeit sofort einen Fehler aus, wenn ein ungültiger oder falsch geschriebener Action-Typ übergeben wurde.