Hur använder man en Reducer med krokar i React?

Dec 30, 2025

Lämna ett meddelande

Hej där! Om du gillar React och vill förbättra ditt spel med reducerare, är du på rätt plats. Jag är inte bara någon slumpmässig teknikentusiast; Jag är faktiskt en reduceringsleverantör. Ja, jag vet, det låter lite nisch, men det är en ganska cool spelning. Så, låt oss dyka in i hur man använder en reducer med krokar i React.

Vad är en reducering?

Först och främst är en reducerare en ren funktion som tar det nuvarande tillståndet och en åtgärd som argument och returnerar ett nytt tillstånd. Det är som en liten tillståndsbytemaskin. I ett nötskal hjälper det dig att hantera statusen för din applikation på ett förutsägbart sätt.

Låt oss säga att du bygger en enkel att göra-lista-app. Du har en lista med uppgifter och du vill kunna lägga till, ta bort eller markera uppgifter som slutförda. Alla dessa åtgärder kan hanteras av en reducering.

Till exempel, här är en grundläggande reduceringsfunktion för vår att göra-lista:

const todoReducer = (tillstånd, action) => { switch (action.type) { case 'ADD_TASK': return [...state, action.task]; case 'REMOVE_TASK': return state.filter(task => task.id!== action.id); case 'COMPLETE_TASK': returnera state.map(task => task.id === action.id? {...task, completed: true } : task ); default: returläge; } };

I den här koden ärtodoReducerfunktionen tar strömmenange(vilket är en mängd uppgifter) och enhandling. Beroende påaction.type, returnerar det ett nytt tillstånd.

Använda Reducer med krokar i React

Låt oss nu prata om hur man använder denna reducerare med krokar i React. React ger en krok som kallasanvändReducersom gör det superenkelt att integrera reducerare i dina funktionella komponenter.

Så här kan du använda den i en komponent:

importera React, { useReducer } från'react'; const todoReducer = (tillstånd, action) => { switch (action.type) { case 'ADD_TASK': return [...state, action.task]; case 'REMOVE_TASK': return state.filter(task => task.id!== action.id); case 'COMPLETE_TASK': returnera state.map(task => task.id === action.id? {...task, completed: true } : task ); default: returläge; } }; const initialState = []; const TodoApp = () => { const [todos, dispatch] = useReducer(todoReducer, initialState); const addTask = (uppgift) => { utskick({typ: 'ADD_TASK', uppgift }); }; const removeTask = (id) => { utskick({typ: 'REMOVE_TASK', id }); }; const completeTask = (id) => { dispatch({ typ: 'COMPLETE_TASK', id }); }; return ( <div> <h1>Att göra-lista</h1> <input type="text" placeholder="Lägg till en uppgift" onKeyDown={(e) => { if (e.key === 'Enter') { addTask({ id: Date.now(), text: e.target.value, completed: 'target.value, completed: 'target.value, completed: 'target }.> e.} e. {todos.map(task => ( <li key={task.id}> <span style={{ textDecoration: task.completed? 'line - through' : 'none' }}> {task.text} </span> <button onClick={() => removeTask(task.id)}>Ta bort =()</Click> <{button på completeTask(task.id)}> {task.completed? 'Uncomplete' : 'Complete'} </button> </li> ))} </ul> </div> ); }; exportera standard TodoApp;

I dettaTodoAppkomponent vi använderanvändReducerför att hantera tillståndet för vår att göra-lista. DeanvändReducerkrok returnerar strömmenange(i detta fall,alla) och aavsändandefungera. Deavsändandefunktionen används för att skicka åtgärder till reduceraren.

När användaren skriver en uppgift i inmatningsfältet och trycker på Enter, visasaddTaskfunktionen anropas, som skickar en åtgärd av typen'ADD_TASK'. Reduceraren tar sedan det nuvarande tillståndet och lägger till den nya uppgiften till den.

Typer av reducerare i den verkliga världen

Som reduceringsleverantör sysslar jag med olika typer av reducerare. I VVS-världen (det här är en annan sorts reducer, men ändå cool), finns det några vanliga typer.

En typ ärButtweld Concentric Reducer. Den används för att ansluta två rör med olika diametrar i en rak linje. En annan typ ärGängad reducering, som används när du behöver ansluta rör med gängade ändar. Och så finns detExcentrisk svetsreducerare, som används när centrumlinjerna för de två rören behöver förskjutas.

Det är intressant hur konceptet med en reducerare finns inom olika områden, men kärnidén att ta något och ändra det till något annat förblir densamma.

Fördelar med att använda reducerare med krokar

Att använda reducerare med krokar i React har flera fördelar.

Eccentric Weld ReducerEccentric Weld Reducer

Först och främst gör det din kod mer förutsägbar. Eftersom en reducerare är en ren funktion, returnerar den alltid samma utgång för samma ingång. Detta innebär att du enkelt kan testa dina reducerar och förstå hur tillståndet förändras i din applikation.

För det andra hjälper det till med komplex statlig förvaltning. I större applikationer kan staten bli riktigt komplicerad. Genom att använda reducerare kan du bryta ned tillståndshanteringen i mindre, mer hanterbara delar.

Slutligen förbättrar det läsbarheten för din kod. När du använder reducerare är det tydligt vilka åtgärder som kan vidtas och hur de påverkar staten. Detta gör det lättare för andra utvecklare (eller till och med framtida dig) att förstå och underhålla koden.

Utmaningar och hur man övervinner dem

Att använda reducerare med krokar är naturligtvis inte bara solsken och regnbågar. Det kan finnas vissa utmaningar.

En utmaning är att förstå flödet av handlingar och tillståndsförändringar. När du har flera åtgärder och ett komplext tillstånd kan det vara svårt att hålla reda på vad som händer. För att övervinna detta kan du använda verktyg som React DevTools, som låter dig inspektera tillståndet och åtgärderna i din applikation.

En annan utmaning är prestanda. Om din reducerfunktion gör många beräkningar eller har en stor mängd data att bearbeta, kan det sakta ner din applikation. För att hantera detta kan du optimera din reducerfunktion genom att använda tekniker som memoisering.

Slutsats

Tja, det är en inpackning om hur man använder en reducer med krokar i React. Det är en kraftfull kombination som kan ta dina React-applikationer till nästa nivå. Oavsett om du bygger en liten att-göra-lista-app eller en storskalig företagsapplikation, kan reducerare hjälpa dig att hantera ditt tillstånd mer effektivt.

Om du letar efter högkvalitativa reducerare för dina VVS-projekt (eller andra industriella applikationer), tveka inte att höra av dig. Jag är här för att hjälpa dig att hitta rätt reducer för dina behov. Skicka bara ett meddelande till mig så kan vi börja diskutera dina krav.

Referenser

  • Reagera officiell dokumentation
  • JavaScript Design Patterns-böcker
  • Handledning online om React State Management
Skicka förfrågan