UseReducer Hook este una dintre cele mai bune opțiuni pentru managementul statului în React. Începeți-vă călătoria cu useReducer Hook folosind acest ghid.

Managementul statului este crucial în dezvoltarea React, servind drept piatră de temelie pentru manipularea și actualizarea datelor în interfețele utilizator. Reacţionează useState Hook oferă o abordare simplă pentru gestionarea stării, dar devine greoaie cu starea complexă. Acolo este utilizați Reducer Hook intră.

The utilizați Reducer Hook oferă o metodologie structurată pentru gestionarea stărilor și tranzițiilor complexe. Îmbrățișând pe utilizați Reducer Hook deblochează flexibilitatea și eficiența, ceea ce duce la un cod mai curat.

Înțelegerea utilizării Reducer Hook

The utilizați Reducer Hook este o caracteristică încorporată oferită de React care simplifică gestionarea stării prin aderarea la principiile modelului reductorului. Vă oferă o alternativă organizată și scalabilă la useState Cârlig, potrivit în special pentru gestionarea stărilor complexe.

instagram viewer

Prin pârghie utilizați Reducer Cârlig, puteți consolida atât starea, cât și tranzițiile sale într-o singură funcție de reducere.

Această funcție ia starea curentă și o acțiune ca intrări, producând ulterior noua stare. Funcționează pe aceleași principii ca și funcția de reducere folosită în JavaScript Array.prototype.reduce() metodă.

Sintaxă și exemplu de utilizare a cârligului useReducer

Sintaxa pentru utilizarea utilizați Reducer Cârligul este după cum urmează:

const [state, dispatch] = useReducer (reductor, initialState);

The utilizați Reducer funcția acceptă două argumente:

  • reductor (funcție): Determină modul în care starea ar trebui să fie actualizată pe baza stării curente și a acțiunii expediate.
  • initialState (oricare): Reprezintă valoarea stării inițiale pentru componentă.

La invocare, cel utilizați Reducer Hook returnează o matrice formată din două elemente:

  • stare (oricare): Indică valoarea stării curente.
  • expediere (funcție): Această funcție permite trimiterea de acțiuni pentru actualizarea stării.

Luați în considerare exemplul de mai jos care ilustrează utilizarea utilizați Reducer Conectați-vă la gestionarea unui contor simplu:

import Reacționează, { useReducer } din'reacţiona';
const initialState = 0;

const reductor = (stare, acțiune) => {
intrerupator (action.type) {
caz'creştere':
întoarcere stare + 1;
caz„scăderea”:
întoarcere stat - 1;
Mod implicit:
întoarcere stat;
}
};

const Contor = () => {
const [count, dispatch] = useReducer (reductor, initialState);
const handleIncrement = () => {
expediere({ tip: 'creştere' });
};

const handleDecrement = () => {
expediere({ tip: „scăderea” });
};

întoarcere (


};

Din ilustrația de mai sus, o stare inițială de 0 este definită alături de o funcție de reducere responsabilă cu gestionarea a două tipuri de acțiuni: creştere și scăderea. Funcția reductorului modifică în mod corespunzător starea în conformitate cu acțiunile specificate.

Prin pârghie utilizați Reducer Hook, starea este inițializată și sunt achiziționate atât valoarea stării curente, cât și funcția de expediere. Funcția de expediere este utilizată ulterior pentru a declanșa actualizări de stare la clic pe butoanele respective.

Construirea unei funcții de reducere

Pentru utilizarea optimă a utilizați Reducer Hook, puteți crea o funcție de reducere care descrie modul în care starea ar trebui să fie actualizată pe baza acțiunilor trimise. Această funcție de reducere acceptă starea curentă și acțiunea ca argumente și returnează noua stare.

De obicei, o funcție de reducere folosește o declarație condițională switch să gestioneze diferite tipuri de acțiuni și să efectueze modificări de stare în consecință.

Luați în considerare exemplul de mai jos al unei funcții de reducere utilizată pentru gestionarea unei liste de sarcini:

const initialState = [];

const reductor = (stare, acțiune) => {
intrerupator (action.type) {
caz'adăuga':
întoarcere [...state, action.payload];
caz'comutare':
întoarcere stare.hartă((a face) =>
todo.id action.payload? { ...a face, efectuat: !todo.completed }: tot
);
caz'șterge':
întoarcere state.filter((a face) => todo.id !== action.payload);
Mod implicit:
întoarcere stat;
}
};

În exemplul de mai sus, funcția de reducere gestionează trei tipuri de acțiuni distincte: adăuga, comutare, și șterge. La primirea adăuga acțiune, adaugă încărcătura utilă (un nou articol de tot) la stat matrice.

În cazul comutare acțiune, alternează efectuat proprietatea articolului todo asociat cu ID-ul specificat. The șterge acțiunea, pe de altă parte, elimină elementul todo legat de ID-ul furnizat din matricea de stări.

Dacă niciunul dintre tipurile de acțiune nu corespunde, funcția de reducere returnează starea curentă nemodificată.

Acțiuni de expediere

Pentru a efectua actualizări de stat facilitate de utilizați Reducer Hook, trimiterea acțiunilor devine indispensabilă. Acțiunile reprezintă obiecte JavaScript simple care elucidează tipul dorit de modificare a stării.

Responsabilitatea gestionării acestor acțiuni și a generării stării ulterioare revine funcției reductorului.

Funcția de expediere, furnizată de utilizați Reducer Hook, este folosit pentru a trimite acțiuni. Acceptă un obiect de acțiune ca argument, instigând astfel actualizarea pertinentă a stării.

În exemplele precedente, acțiunile au fost trimise folosind sintaxa expediere({tip: 'actionType'}). Cu toate acestea, este posibil ca acțiunile să cuprindă date suplimentare, cunoscute sub numele de încărcătură utilă, care oferă informații suplimentare referitoare la actualizare. De exemplu:

expediere({ tip: 'adăuga', încărcătură utilă: { id: 1, text: „Terminați temele”, efectuat: fals } });

În acest scenariu, adăuga acțiunea include un obiect de sarcină utilă care încapsulează detaliile noului articol tot care urmează să fie încorporat în stare.

Gestionarea stării complexe cu useReducer

Adevărata putere a utilizați Reducer Hook constă în capacitatea sa de a gestiona structuri complexe de stat, cuprinzând numeroase valori interconectate și tranziții complicate de stat.

Prin centralizarea logicii de stat în cadrul unei funcții de reducere, gestionarea diverselor tipuri de acțiuni și actualizarea sistematică a statului devine un demers fezabil.

Luați în considerare un scenariu în care a Formularul de reacție constă din mai multe câmpuri de intrare. Mai degrabă decât să gestionezi starea fiecărei intrări în mod individual useState, cel utilizați Reducer Hook poate fi folosit pentru a gestiona holistic starea formularului.

Funcția de reducere poate gestiona cu abilități acțiunile relevante pentru modificarea câmpurilor specifice și validarea completă a întregului formular.

const initialState = {
Nume: '',
e-mail: '',
parola: '',
isFormValid: fals,
};

const reductor = (stare, acțiune) => {
intrerupator (action.type) {
caz„updateField”:
întoarcere { ...state, [action.payload.field]: action.payload.value };
caz„validateForm”:
întoarcere { ...stat, isFormValid: action.payload };
Mod implicit:
întoarcere stat;
}
};

În exemplu, funcția de reducere se adresează la două tipuri de acțiuni distincte: updateField și validateForm. The updateField acțiunea facilitează modificarea unui anumit câmp în cadrul statului prin utilizarea valorii furnizate.

Invers, cel validateForm acțiunea actualizează isFormValid proprietate pe baza rezultatului de validare furnizat.

Prin angajarea utilizați Reducer Cârlig pentru a gestiona starea formularului, toate stările și acțiunile asociate sunt consolidate într-o entitate singulară, sporind astfel ușurința de înțelegere și întreținere.

Comparând useReducer cu alte soluții de management de stat

desi utilizați Reducer Hook este un instrument puternic pentru managementul statului, este vital să recunoaștem diferențele și compromisurile sale în comparație cu soluțiile alternative de management de stat din ecosistemul React.

useState

The useState Hook este suficient pentru gestionarea stărilor simple, izolate, în cadrul unei componente. Sintaxa sa este mai concisă și mai simplă în comparație cu utilizați Reducer. Cu toate acestea, pentru tranziții complexe de stare sau de stare, utilizați Reducer oferă o abordare mai organizată.

Redux

Redux reprezintă o bibliotecă proeminentă de management de stat pentru aplicațiile React. Aderă la un model reductor similar ca utilizați Reducer, dar oferă caracteristici suplimentare, cum ar fi un magazin centralizat, suport pentru middleware și depanare în timp.

Redux se dovedește ideal pentru aplicații la scară largă care necesită cerințe complexe de management de stat. Cu toate acestea, pentru proiecte mai mici sau nevoi mai simple de management de stat, utilizați Reducer poate servi ca o alternativă ușoară și mai simplă.

Context API

API-ul Context al React permite partajarea stării pe mai multe componente, fără a recurge la foraj cu prop. În legătură cu utilizați Reducer, poate oferi o soluție centralizată de management de stat.

În timp ce combinația de Context API și utilizați Reducer are o putere considerabilă, poate introduce o complexitate suplimentară atunci când este juxtapusă cu utilizarea useReducer în mod izolat.

Context API este cel mai bine folosit atunci când este nevoie de a partaja starea în mijlocul unor componente profund imbricate sau când se confruntă cu o ierarhie de componente complexă. Alegerea unei soluții adecvate de management de stat depinde de cerințele specifice ale aplicației în cauză.

Pentru proiecte de dimensiuni moderate, utilizați Reducer se poate dovedi a fi o alternativă eficientă și mai simplă la Redux sau Context API.

Dezlănțuirea simplității managementului de stat

UseReducer Hook este un instrument puternic pentru simplificarea managementului stării în aplicațiile React. Prin aderarea la principiile modelului reductorului, oferă o abordare structurată și scalabilă pentru gestionarea tranzițiilor complexe de stare și stare.

Când este folosit în tandem cu useState Hook, useReducer poate servi ca o alternativă ușoară la biblioteci precum Redux sau Context API, în special în contextul de dimensiuni mai mici până la mijlocii proiecte.