all
Business
data science
design
development
our journey
Strategy Pattern
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Ronaiza Cardoso

25. februar 2024

Min Read

React Hooks vs Redux afmystificeret

Redux og React-kroge De skal ikke opfattes som det modsatte af hinanden. Det er forskellige ting, med forskellige mål.

Hvornår React Hooks blev født, flere udviklere virkede forvirrede over de introducerede koncepter, og hvordan de vil interpolere ind i Redux bibliotek. Den BrugerEducer hook øgede denne forvirring.

I denne artikel vil jeg forklare, hvordan Redux og den nye React Hook BrugerEducer De er forskellige, og hvordan de kan bruges.

blue arrow to the left
Imaginary Cloud logo

Redux og React Hooks: Statsstyring

Redux blev oprettet for at administrere tilstand på tværs af applikationen. Det giver flere værktøjer til at mindske kompleksiteten ved håndtering af den globale applikationstilstand.

De nye tilføjelser til Reagere bibliotek, BrugKontekst og BrugerEducer, kom også til at styre tilstanden af en Reagere ansøgning. Det har dog en subtil forskel fra Redux, som jeg vil præcisere yderligere nedenfor.

Men først, lad mig introducere dig til React Hooks.

blue arrow to the left
Imaginary Cloud logo

Hvad er React Hooks?

React Hooks er den nye måde at håndtere tilstand og livscyklus på i React-komponenter, uden at stole på komponentklasser. Det blev introduceret i 16.8-versionen af biblioteket og har til hensigt at mindske kompleksiteten af komponenterne ved at dele logik mellem dem.

React Hooks giver en nem måde at håndtere komponent opførsel og deling komponent logik.

Den React Hooks funktionen har ikke til hensigt at erstatte den tidligere viden om Reagere begreber som livscyklus, stat, rekvisitter, kontekst, og referencer.

Med React Hooks, vi kan skrive vores brugerdefinerede kroge for at udtrække logik, der vil blive brugt i mere end en komponent og implementere D.R.Y (Gentag ikke dig selv) mønster.

I uddraget nedenfor kan du se et eksempel på brugerdefinerede kroge skrevet til et af vores projekter:


Okay, nu hvor vi ved React Hooks, lad os tage et kig på Redux.

blue arrow to the left
Imaginary Cloud logo

Hvad er Redux?

Redux er et bibliotek til styring af den globale applikationstilstand. I dette bibliotek kan vi finde flere værktøjer, der hjælper os, udviklere, med at være i kontakt med applikationens tilstand og også transformere den ved at give brugeren mulighed for at udsende handlinger.

Redux, som dokumentationen siger, kan beskrives i tre grundlæggende principper:

  1. En enkelt kilde til sandhed: din applikations globale tilstand gemmes i et objekttræ inden for en enkelt butik.
  2. Staten er skrivebeskyttet: Den eneste måde at ændre på butik er ved at udsende handlinger.
  3. Ændringer foretages med rene funktioner: Sådan opdateres butik, reduktionsenheden skal skrives som en ren funktion.

Redux endda opdateret biblioteket med sin brugerdefinerede kroge. Disse kan bruges til at integrere de komponenter, der bruger React Hooks funktioner til at få adgang til data fra lager- og forsendelseshandlinger uden at stole på komponentklasserne.

Nu hvor vi er lidt mere fortrolige med Redux og React Hooks Lad os se forskellen mellem dem.

blue arrow to the left
Imaginary Cloud logo

React Hooks mod Redux

Begge håndterer statsstyring, men med flere forskelle. Der er meget abstraktion i den følgende sætning, men dette virker som en gylden regel for at vide, hvornår du skal bruge Redux ind i din ansøgning:

Redux skal bruges i applikationer, der har flere funktioner. Med disse funktioner deler du bidder af de samme oplysninger.

Mens du bruger BrugKontekst og BrugerEducer, den Redux Funktionaliteter kan gengives. Redux tilbyder nogle gratis værktøjer, der hjælper os med at administrere applikationen uden at genopfinde hjulet. Det tilbyder os også følgende:

  • Gemmer den faktiske tilstand af hele vores applikation;
  • Værktøjer til at debugge, mens du udvikler lignende redux-devtools;
  • Skift den faktiske tilstand uden at udløse en gengivelse af hele applikationen ved at bruge forbinde () funktion.

Lad os forstå lidt mere om det faktiske Reagere afhængighed, React Hooks, at styre den globale stat og dens ideelle anvendelse.

blue arrow to the left
Imaginary Cloud logo

UseContext-krogen

Den BrugKontekst krog kommer for at få adgang til stat som deles af udbydere. Det bedste scenarie for at bruge React Hooks BrugKontekst er i en lille applikation eller til at dele små stykker information på tværs af komponenterne, som temaet for applikationen. Den BrugKontekst har to hovedbegreber, og de er anført nedenfor.

  1. Udbyder
    Udbyderen er ansvarlig for at styre statens ændringer. Disse ændringer er spredt over alle forbrugere. Et godt eksempel til at bruge BrugKontekst hook er tema.


Denne udbyder opretter tema objekt, der vil blive brugt i alle applikationer og en funktion til at opdatere det, IndstillTema. I uddraget nedenfor kan du kontrollere IndstillTema i aktion.


  1. Forbruger
    Forbrugeren, som det selvforklarende navn siger, forbruger det indhold, den abonnerer på. Hver gang en forbruger ændrer udbyderens tilstand, spredes disse ændringer også af alle andre forbrugere. Lad os se på følgende eksempel:


I uddraget ovenfor kan vi kontrollere brugen af det globale objekt tema for at indstille baggrundsfarven på vores applikation.

Efter at have lært at kende BrugKontekst funktion, der er endnu en, der forvirrer udviklerne. Den BrugerEducer kroge. I afsnittet nedenfor vil jeg gå gennem denne funktionalitet og forklare dens anvendelsestilfælde.

New call-to-action
blue arrow to the left
Imaginary Cloud logo

Kan UserEducer erstatte Redux?

Den BrugerEducer krog skal bruges i komponenter, der har kompleks logik bag sig. Det viser sig som den største forvirring med Redux bibliotek, fordi udviklere har en tendens til at tro det BrugerEducer kunne erstatte statsadministratorbiblioteket. Men faktisk bør brugen begrænses til komponenter. Dette skyldes primært, at den globale anvendelse af BrugerEducer kræver omskrivning af ny kode til funktioner som styring af komponentopdatering.

Hvordan fungerer UserEducer?

Nu hvor vi forstår brugssagen for BrugerEducer hook er tid til at vise noget handling. I eksemplet nedenfor bruger vi den nye React Hook afhængighed BrugerEducer til at styre en komponent med forskellige tilstande.

Lad os tage et dybt kig på BrugerEducer input og output parametre.

Indgangsparametre

Erklæringen om BrugerEducer krog vil sandsynligvis se sådan ud:
const [tilstand, forsendelse] = userEducer (reducer, INITIAL_STATE);

Hvor vi kan identificere, at BrugerEducer krog modtager to parametre, som vist nedenfor:

  1. Den reducering funktion: den, der bruges til at transformere den globale stat.
    I vores eksempel er reduktionsfunktionen det ansvarlige svar på tre handlinger:


  1. Den oprindelige stat: repræsenterer standardtilstanden.


Udgangsparametre

Krogens første outputparameter er den faktiske komponenttilstand. Denne tilstand skal bruges i vores applikation til at repræsentere dataene.


Det følger også den samme regel i Reagere stat, det vil sige:

Skriv aldrig direkte til staten, og staten skal opdateres ved at udsende handlinger.

Den handlinger det vil være afsendt af vores komponenter skal altid repræsenteres som et objekt med type og nyttelast nøgle. Hvor type står som identifikator for afsendt handling og nyttelast er det stykke information, at dette handling vil føje til staten.


Indpakning

Ved at tilføje alle disse stykker sammen kan vi se det endelige resultat i applikationen nedenfor:

blue arrow to the left
Imaginary Cloud logo

React Hooks eller Redux: begge dele.

Redux og React Hooks skal ses som komplementer og også som forskellige ting. Mens med den nye React Hooks tilføjelser, BrugKontekst og BrugerEducer, du kan styre den globale tilstand, i projekter med større kompleksitet, du kan stole på Redux for at hjælpe dig med at administrere applikationsdataene.

Hvis du tænker på opbygning af en applikation, begge kan bruges. Mens Redux indeholder den globale tilstand og handlinger, der kan sendes, React Hooks funktioner til håndtering af den lokale komponenttilstand.

Fandt du denne artikel nyttig? Du kan måske også lide disse!

blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
Ronaiza Cardoso
Ronaiza Cardoso

Javascript-udvikler siden 2016 har jeg bygget mobile apps ved hjælp af Ionic og React Native. Guitarist og madlavningselsker.

Read more posts by this author

People who read this post, also found these interesting:

arrow left
arrow to the right
Dropdown caret icon