Hak useReducer to jedna z najlepszych opcji zarządzania stanem w React. Rozpocznij swoją podróż z hakiem useReducer, korzystając z tego przewodnika.

Zarządzanie stanem ma kluczowe znaczenie w rozwoju React, służąc jako kamień węgielny do obsługi i aktualizacji danych w interfejsach użytkownika. Reaguj stan użycia Hook zapewnia proste podejście do zarządzania stanem, ale staje się kłopotliwe w przypadku złożonego stanu. Właśnie tam Użyj reduktora Hak wchodzi.

The Użyj reduktora Hook oferuje ustrukturyzowaną metodologię zarządzania złożonymi stanami i przejściami. obejmując Użyj reduktora Hook odblokowuje elastyczność i wydajność, prowadząc do czystszego kodu.

Zrozumienie haka useReducer

The Użyj reduktora Hook to wbudowana funkcja dostarczana przez React, która usprawnia zarządzanie stanem poprzez przestrzeganie zasad wzorca reduktora. Oferuje zorganizowaną i skalowalną alternatywę dla stan użycia Hak, szczególnie odpowiedni do obsługi złożonych stanów.

Wykorzystując Użyj reduktora Hook, możesz skonsolidować zarówno stan, jak i jego przejścia w ramach jednej funkcji redukcyjnej.

instagram viewer

Ta funkcja przyjmuje bieżący stan i akcję jako dane wejściowe, a następnie tworzy nowy stan. Działa na tych samych zasadach, co funkcja redukująca stosowana w JavaScript Tablica.prototyp.zmniejsz() metoda.

Składnia i przykłady użycia hooka useReducer

Składnia do korzystania z Użyj reduktora Hak jest następujący:

konst [stan, wysyłka] = useReducer (reduktor, stan początkowy);

The Użyj reduktora funkcja przyjmuje dwa argumenty:

  • reduktor (funkcja): Określa sposób, w jaki stan powinien być aktualizowany na podstawie bieżącego stanu i wysłanej akcji.
  • stan początkowy (dowolny): reprezentuje wartość stanu początkowego komponentu.

Po wywołaniu, Użyj reduktora Hook zwraca tablicę składającą się z dwóch elementów:

  • stan (dowolny): Oznacza bieżącą wartość stanu.
  • wysyłka (funkcja): Ta funkcja umożliwia wysyłanie akcji w celu aktualizacji stanu.

Rozważ poniższy przykład ilustrujący użycie Użyj reduktora Haczyk w zarządzaniu prostym licznikiem:

import Zareaguj, { useReducer } z'reagować';
konst stan początkowy = 0;

konst reduktor = (stan, czynność) => {
przełącznik (Rodzaj działania) {
sprawa'przyrost':
powrót stan + 1;
sprawa„zmniejszenie”:
powrót państwo - 1;
domyślny:
powrót państwo;
}
};

konst Licznik = () => {
konst [liczba, wysyłka] = useReducer (reduktor, stan początkowy);
konst uchwytPrzyrost = () => {
załatwić({ typ: 'przyrost' });
};

konst zmniejszanie uchwytu = () => {
załatwić({ typ: „zmniejszenie” });
};

powrót (


};

Z powyższej ilustracji, stan początkowy 0 jest zdefiniowana wraz z funkcją reduktora odpowiedzialną za obsługę dwóch rodzajów akcji: przyrost I spadek. Funkcja reduktora należycie modyfikuje stan zgodnie z określonymi akcjami.

Wykorzystując Użyj reduktora Hook, stan jest inicjowany i uzyskiwana jest zarówno wartość bieżącego stanu, jak i funkcja wysyłki. Funkcja wysyłania jest następnie wykorzystywana do wyzwalania aktualizacji stanu po kliknięciu odpowiednich przycisków.

Konstruowanie funkcji redukującej

Dla optymalnego wykorzystania Użyj reduktora Hook, możesz utworzyć funkcję redukującą, która opisuje, w jaki sposób stan powinien być aktualizowany na podstawie wysłanych akcji. Ta funkcja redukująca akceptuje bieżący stan i akcję jako argumenty i zwraca nowy stan.

Zwykle funkcja reduktora stosuje instrukcję warunkową switch obsługiwać różne typy akcji i odpowiednio wprowadzać modyfikacje stanu.

Rozważ poniższy przykład funkcji redukującej wykorzystywanej do zarządzania listą rzeczy do zrobienia:

konst stan początkowy = [];

konst reduktor = (stan, czynność) => {
przełącznik (Rodzaj działania) {
sprawa'dodać':
powrót [...stan, akcja.ładunek];
sprawa'przełącznik':
powrót mapa stanu((do zrobienia) =>
todo.id akcja.ładunek? { ...do zrobienia, zakończony: !todo.completed }: todo
);
sprawa'usuwać':
powrót stan.filtr((do zrobienia) => todo.id !== akcja.ładunek);
domyślny:
powrót państwo;
}
};

W powyższym przypadku funkcja redukująca obsługuje trzy różne typy akcji: dodać, przełącznik, I usuwać. Po otrzymaniu dodać akcja, dołącza ładunek (nowy element do zrobienia) do pliku państwo szyk.

w przypadku przełącznik akcja, zmienia zakończony właściwość elementu do wykonania powiązanego z określonym identyfikatorem. The usuwać akcja natomiast eliminuje element todo powiązany z podanym identyfikatorem z tablicy stanów.

Jeśli żaden z typów akcji nie odpowiada, funkcja redukująca zwraca bieżący stan w niezmienionej postaci.

Akcje wysyłkowe

Aby wprowadzić aktualizacje stanu ułatwione przez Użyj reduktora Hook, wysyłanie akcji staje się nieodzowne. Akcje reprezentują zwykłe obiekty JavaScript, które wyjaśniają pożądany typ modyfikacji stanu.

Odpowiedzialność za obsługę tych działań i generowanie kolejnego stanu spoczywa na funkcji reduktora.

Funkcja wysyłkowa, dostarczana przez Użyj reduktora Hook służy do wysyłania akcji. Akceptuje obiekt akcji jako argument, inicjując w ten sposób odpowiednią aktualizację stanu.

W poprzednich przykładach akcje były wysyłane przy użyciu składni wysyłka ({typ: 'actionType'}). Możliwe jest jednak, aby działania obejmowały dane uzupełniające, tzw ładunek, który zawiera dalsze informacje dotyczące aktualizacji. Na przykład:

załatwić({ typ: 'dodać', ładunek: { ID: 1, tekst: „Dokończ pracę domową”, zakończony: FAŁSZ } });

W tym scenariuszu, dodać akcja zawiera obiekt ładunku zawierający szczegółowe informacje o nowym elemencie todo, który ma zostać włączony do stanu.

Zarządzanie stanem złożonym za pomocą useReducer

Prawdziwa siła tzw Użyj reduktora Hook leży w jego zdolności do zarządzania skomplikowanymi strukturami stanów, obejmującymi wiele powiązanych ze sobą wartości i skomplikowanych przejść między stanami.

Dzięki centralizacji logiki stanu w ramach funkcji reduktora zarządzanie różnymi typami działań i systematyczna aktualizacja stanu staje się wykonalnym przedsięwzięciem.

Rozważ scenariusz, w którym a formularz reakcji składa się z wielu pól wejściowych. Zamiast zarządzać stanem każdego wejścia indywidualnie przez stan użycia, Użyj reduktora Hook może być wykorzystany do holistycznego zarządzania stanem formularza.

Funkcja reduktora potrafi sprawnie obsłużyć akcje związane z modyfikacją poszczególnych pól oraz kompleksową walidacją całego formularza.

konst stan początkowy = {
nazwa: '',
e-mail: '',
hasło: '',
jest prawidłowym formularzem: FAŁSZ,
};

konst reduktor = (stan, czynność) => {
przełącznik (Rodzaj działania) {
sprawa„pole aktualizacji”:
powrót { ...stan, [action.payload.field]: action.payload.value };
sprawa„Weryfikuj formularz”:
powrót { ...państwo, jest prawidłowym formularzem: akcja.ładunek };
domyślny:
powrót państwo;
}
};

W podanym przykładzie funkcja redukująca odpowiada dwóm różnym typom akcji: pole aktualizacji I sprawdź poprawność formularza. The pole aktualizacji akcja ułatwia modyfikację określonego pola w stanie poprzez wykorzystanie podanej wartości.

Odwrotnie, sprawdź poprawność formularza akcja aktualizuje jest prawidłowym formularzem właściwość na podstawie podanego wyniku walidacji.

Zatrudniając ww Użyj reduktora Hook do zarządzania stanem formularza, wszystkie powiązane stany i działania są skonsolidowane w ramach pojedynczej jednostki, zwiększając w ten sposób łatwość zrozumienia i konserwacji.

Porównanie useReducer z innymi rozwiązaniami do zarządzania stanem

Chociaż Użyj reduktora Hook jest potężnym narzędziem do zarządzania stanem, ważne jest, aby uznać jego różnice i kompromisy w porównaniu z alternatywnymi rozwiązaniami do zarządzania stanem w ekosystemie React.

stan użycia

The stan użycia Hook wystarcza do zarządzania prostymi, izolowanymi stanami w komponencie. Jego składnia jest bardziej zwięzła i prosta w porównaniu do Użyj reduktora. Niemniej jednak, w przypadku skomplikowanych stanów lub przejść między stanami, Użyj reduktora zapewnia bardziej zorganizowane podejście.

Redux

Redux reprezentuje wybitną bibliotekę zarządzania stanem dla aplikacji React. Przylega do podobnego wzoru reduktora jak Użyj reduktora, ale zapewnia dodatkowe funkcje, takie jak scentralizowany magazyn, obsługę oprogramowania pośredniego i debugowanie podróży w czasie.

Redux sprawdza się idealnie w przypadku aplikacji na dużą skalę wymagających złożonych wymagań dotyczących zarządzania stanem. Jednak w przypadku mniejszych projektów lub prostszych potrzeb związanych z zarządzaniem stanem Użyj reduktora może służyć jako lekka i prostsza alternatywa.

Interfejs API kontekstu

Kontekstowe API Reacta umożliwia współdzielenie stanu na wielu komponentach bez uciekania się do wiercenia podporowego. W połączeniu z Użyj reduktora, może dać scentralizowane rozwiązanie do zarządzania stanem.

Chociaż połączenie interfejsu API kontekstu i Użyj reduktora ma znaczną moc, może wprowadzić dodatkową złożoność w zestawieniu z wykorzystaniem useReducer w izolacji.

Kontekstowy interfejs API jest najlepiej stosowany, gdy zachodzi konieczność współdzielenia stanu między głęboko zagnieżdżonymi komponentami lub w przypadku złożonej hierarchii komponentów. Wybór odpowiedniego rozwiązania do zarządzania stanem zależy od konkretnych wymagań danej aplikacji.

W przypadku projektów o średniej wielkości, Użyj reduktora może okazać się skuteczną i prostszą alternatywą dla Redux lub Context API.

Uwolnienie prostoty zarządzania stanem

Hak useReducer jest potężnym narzędziem upraszczającym zarządzanie stanem w aplikacjach React. Stosując się do zasad wzorca reduktora, oferuje ustrukturyzowane i skalowalne podejście do obsługi złożonych stanów i przejść między stanami.

Używany w tandemie z useState Hook, useReducer może służyć jako lekka alternatywa dla biblioteki, takie jak Redux lub Context API, szczególnie w kontekście mniejszych i średnich projektowanie.