UseReducer Hook er et av de beste alternativene for statlig ledelse i React. Kickstart reisen din med bruksreduksjonskroken ved hjelp av denne veiledningen.

Statlig ledelse er avgjørende i React-utviklingen, og fungerer som en hjørnestein for håndtering og oppdatering av data i brukergrensesnitt. Reager sin useState Hook gir en enkel tilnærming til å administrere tilstand, men det blir tungvint med kompleks tilstand. Det er der brukReducer Krok kommer inn.

De brukReducer Hook tilbyr en strukturert metodikk for å håndtere komplekse tilstander og overganger. Omfavner brukReducer Krok låser opp fleksibilitet og effektivitet, noe som fører til renere kode.

Forstå bruken Reducer Hook

De brukReducer Hook er en innebygd funksjon levert av React som effektiviserer tilstandsstyring ved å følge prinsippene for reduksjonsmønsteret. Det gir deg et organisert og skalerbart alternativ til useState Krok, spesielt egnet for håndtering av komplekse tilstander.

Ved å utnytte brukReducer Hook, du kan konsolidere både staten og dens overganger innenfor en enkelt reduksjonsfunksjon.

instagram viewer

Denne funksjonen tar den nåværende tilstanden og en handling som innganger, og produserer deretter den nye tilstanden. Den fungerer etter de samme prinsippene som reduseringsfunksjonen som brukes i JavaScript Array.prototype.reduce() metode.

Syntaks og eksempel Bruk av useReducer Hook

Syntaksen for å bruke brukReducer Kroken er som følger:

konst [state, sending] = useReducer (reducer, initialState);

De brukReducer funksjon aksepterer to argumenter:

  • redusering (funksjon): Bestemmer måten tilstanden skal oppdateres på basert på gjeldende tilstand og utsendt handling.
  • initialState (alle): Representerer starttilstandsverdien for komponenten.

Ved påkallelse vil brukReducer Hook returnerer en matrise som består av to elementer:

  • stat (hvilken som helst): Angir gjeldende tilstandsverdi.
  • utsendelse (funksjon): Denne funksjonen gjør det mulig å sende handlinger for å oppdatere tilstanden.

Tenk på eksemplet nedenfor som illustrerer bruken av brukReducer Hook i å administrere en enkel teller:

import Reager, { useReducer } fra'reagere';
konst initialState = 0;

konst redusering = (stat, handling) => {
bytte om (action.type) {
sak'øke':
komme tilbake oppgi + 1;
sak'nedsette':
komme tilbake stat - 1;
misligholde:
komme tilbake stat;
}
};

konst Teller = () => {
konst [count, dispatch] = useReducer (reducer, initialState);
konst handleInkrement = () => {
sending({ type: 'øke' });
};

konst handleDecrement = () => {
sending({ type: 'nedsette' });
};

komme tilbake (


};

Fra illustrasjonen ovenfor, en starttilstand på 0 er definert sammen med en reduksjonsfunksjon som er ansvarlig for å håndtere to typer handlinger: øke og nedgang. Reduksjonsfunksjonen modifiserer tilstanden i samsvar med de angitte handlingene.

Ved å utnytte brukReducer Hook, tilstanden initialiseres, og både gjeldende tilstandsverdi og ekspedisjonsfunksjonen hentes. Sendefunksjonen blir deretter brukt til å utløse tilstandsoppdateringer ved å klikke på de respektive knappene.

Konstruere en reduksjonsfunksjon

For optimal utnyttelse av brukReducer Hook, du kan lage en reduseringsfunksjon som beskriver hvordan tilstanden skal oppdateres basert på de utsendte handlingene. Denne reduseringsfunksjonen aksepterer gjeldende tilstand og handlingen som argumenter og returnerer den nye tilstanden.

Vanligvis en reduksjonsfunksjon benytter en betinget bytteerklæring å håndtere ulike handlingstyper og utføre tilstandsendringer deretter.

Tenk på eksemplet nedenfor av en reduksjonsfunksjon som brukes til å administrere en gjøremålsliste:

konst initialState = [];

konst redusering = (stat, handling) => {
bytte om (action.type) {
sak'Legg til':
komme tilbake [...stat, handling.nyttelast];
sak'veksle':
komme tilbake state.map((å gjøre) =>
todo.id action.payload? { ...å gjøre, fullført: !todo.completed }: gjøremål
);
sak'slett':
komme tilbake state.filter((å gjøre) => todo.id !== action.payload);
misligholde:
komme tilbake stat;
}
};

I tilfellet ovenfor håndterer reduksjonsfunksjonen tre forskjellige handlingstyper: Legg til, veksle, og slette. Ved mottak av Legg til handling, legger den til nyttelasten (et nytt gjøremål) til stat array.

I tilfelle av veksle handling, veksler den fullført egenskapen til gjøremålselementet knyttet til den angitte ID-en. De slette handling, på den annen side, eliminerer gjøremålselementet som er koblet til den oppgitte ID-en fra state-arrayen.

Skulle ingen av handlingstypene samsvare, returnerer reduksjonsfunksjonen den gjeldende tilstanden uendret.

Utsendelseshandlinger

For å gjennomføre statlige oppdateringer tilrettelagt av brukReducer Hook, utsendelse av handlinger blir uunnværlig. Handlinger representerer vanlige JavaScript-objekter som belyser ønsket type tilstandsendringer.

Ansvaret for å håndtere disse handlingene og generere den påfølgende tilstanden ligger hos reduksjonsfunksjonen.

Forsendelsesfunksjonen, levert av brukReducer Hook, brukes til å sende handlinger. Den aksepterer et handlingsobjekt som et argument, og starter dermed den relevante tilstandsoppdateringen.

I de foregående eksemplene ble handlinger sendt ved hjelp av syntaksen dispatch({type: 'actionType'}). Imidlertid kan det tenkes at handlinger omfatter tilleggsdata, kjent som nyttelast, som gir ytterligere innsikt knyttet til oppdateringen. For eksempel:

sending({ type: 'Legg til', nyttelast: { id: 1, tekst: "Fullfør lekser", fullført: falsk } });

I dette scenariet vil Legg til handlingen inkluderer et nyttelastobjekt som innkapsler detaljene til det nye gjøremålet som skal innlemmes i staten.

Håndtere kompleks tilstand med useReducer

Den sanne styrken til brukReducer Hook ligger i sin kapasitet til å håndtere intrikate tilstandsstrukturer, som omfatter en rekke sammenkoblede verdier og intrikate tilstandsoverganger.

Ved å sentralisere statslogikken i en reduksjonsfunksjon, blir styring av ulike handlingstyper og systematisk oppdatering av staten en gjennomførbar bestrebelse.

Tenk på et scenario hvor a reaksjonsskjemaet består av flere inndatafelt. I stedet for å administrere hver inngangs tilstand individuelt gjennom useState, den brukReducer Hook kan brukes til å administrere skjematilstanden helhetlig.

Reduksjonsfunksjonen kan håndtere handlinger som er relevante for endring av spesifikke felt og omfattende validering av hele skjemaet.

konst initialState = {
Navn: '',
e-post: '',
passord: '',
isFormValid: falsk,
};

konst redusering = (stat, handling) => {
bytte om (action.type) {
sak'updateField':
komme tilbake { ...state, [action.payload.field]: action.payload.value };
sak'validateForm':
komme tilbake { ...stat, isFormValid: action.payload };
misligholde:
komme tilbake stat;
}
};

I eksemplet henvender reduksjonsfunksjonen seg til to forskjellige handlingstyper: updateField og validerForm. De updateField handling letter endringen av et spesifikt felt i staten ved å bruke den oppgitte verdien.

Motsatt er validerForm handling oppdaterer isFormValid egenskap basert på det oppgitte valideringsresultatet.

Ved å ansette brukReducer Hook for å administrere skjematilstanden, alle tilknyttede tilstander og handlinger er konsolidert i en enkelt enhet, og gjør dermed forståelsen og vedlikeholdet enklere.

Sammenligning av useReducer med andre statlige administrasjonsløsninger

Selv om brukReducer Hook står som et potent verktøy for statlig styring, det er viktig å erkjenne dens ulikheter og avveininger sammenlignet med alternative statlige styringsløsninger innenfor React-økosystemet.

useState

De useState Hook er tilstrekkelig for å håndtere enkle, isolerte tilstander i en komponent. Syntaksen er mer kortfattet og grei i forhold til brukReducer. Ikke desto mindre, for intrikate tilstands- eller tilstandsoverganger, brukReducer gir en mer organisert tilnærming.

Redux

Redux representerer et fremtredende statlig ledelsesbibliotek for React-applikasjoner. Den holder seg til et lignende reduksjonsmønster som brukReducer, men tilbyr tilleggsfunksjoner som en sentralisert butikk, mellomvarestøtte og tidsreisefeilsøking.

Redux viser seg å være ideell for store applikasjoner som krever komplekse tilstandsstyringskrav. Men for mindre prosjekter eller enklere statlige styringsbehov, brukReducer kan tjene som et lett og enklere alternativ.

Context API

Reacts Context API muliggjør deling av staten over flere komponenter uten å ty til propellboring. I forbindelse med brukReducer, kan det gi en sentralisert statlig styringsløsning.

Mens kombinasjonen av Context API og brukReducer har betydelig kraft, kan den introdusere ekstra kompleksitet når den settes sammen med bruken av useReducer isolert.

Context API er best brukt når det er nødvendig å dele tilstand blant dypt nestede komponenter eller når de konfronteres med et komplekst komponenthierarki. Valget av en passende tilstandsstyringsløsning avhenger av de spesifikke kravene til den aktuelle applikasjonen.

For prosjekter av moderat størrelse, brukReducer kan vise seg å være et effektivt og enklere alternativ til Redux eller Context API.

Slipper løs den enkle statlige ledelsen

UseReducer Hook står som et potent instrument for å forenkle tilstandsadministrasjon i React-applikasjoner. Ved å følge prinsippene for reduksjonsmønsteret, tilbyr det en strukturert og skalerbar tilnærming til å håndtere komplekse tilstands- og tilstandsoverganger.

Når den brukes sammen med useState Hook, kan useReducer tjene som et lett alternativ til biblioteker som Redux eller Context API, spesielt i sammenheng med mindre til mellomstore prosjekter.