Użycie niestandardowych Hooks w React okazało się genialnym podejściem do abstrahowania powtarzającej się logiki i poprawy czytelności oraz utrzywalności twoich komponentów. W tym samouczku dowiesz się na przykładzie „useJsonFetch”, jak możesz tworzyć własne hooki tworząc, które są przeznaczone specjalnie do pobierania danych JSON z serwera. Chodźmy więc bezpośrednio do sedna.

Najważniejsze wnioski

  • Niestandardowe hooki to proste funkcje, które korzystają z hooków React.
  • Pozwalają na ponowne użycie logiki w wielu komponentach.
  • Niestandardowy hook może zarządzać wieloma stanami, takimi jak loading, data i error.
  • Struktura i implementacja niestandardowego hooka są proste i przejrzyste.

Instrukcja krok po kroku tworzenia hooka useJsonFetch

Podstawowe rozważania

Zanim zaczniesz pisać swój własny hook, ważne jest zdefiniowanie funkcjonalności, której potrzebujesz. W tym przypadku chcesz stworzyć hooka, który pobiera dane JSON z serwera. Nazwiemy nasz hook „useJsonFetch”. Aby zrozumieć, jak zaimplementować ten hook, najpierw przyjrzyj się jak użyć useJsonFetch w komponencie.

Własne haki w React: Stwórz hak useJsonFetch

Wywołujesz hooka przekazując URL, z którego chcesz pobrać dane JSON. Hook będzie odpowiedzialny za pobranie danych oraz obsługę stanów ładowania i błędów.

Implementacja useJsonFetch

Aby zaimplementować niestandardowego hooka, utwórz nowy plik, który zaczyna się od „use”, aby odpowiadać konwencjom Reacta. Nazwa pliku będzie więc useJsonFetch.js.

W tym pliku tworzysz funkcję, która przyjmuje URL jako parametr. W funkcji definiujesz stany dla danych, błędu i ładowania.

Tutaj dane na początku są undefined, błąd również i ładowanie zaczyna się od true, aby oznaczyć stan ładowania. Wynika to z tego, jak JavaScript obsługuje operacje asynchroniczne.

Wykorzystanie useEffect

Wewnątrz hooka używasz useEffect, aby rozpocząć proces pobierania, gdy komponent jest montowany. Upewnij się, że aktualizujesz stan ładowania zgodnie z tym.

Z await najpierw wywołujesz URL za pomocą fetch. Ponieważ fetch zwraca Promise, możesz zaczekać na odpowiedź za pomocą await. Po odebraniu odpowiedzi przekształcasz dane za pomocą.json() w obiekt JavaScript.

Jeśli wystąpi błąd, łapiesz go za pomocą try-catch i ustawiasz błąd. Niezależnie od tego, czy żądanie zakończyło się sukcesem, czy wystąpił błąd, upewnij się, że ustawiasz ładowanie na false, gdy odpowiedź dotrze.

Własne haki w React: Stwórz hak useJsonFetch

Zwracanie hooka

Na końcu zwracasz stany danych, błędu i ładowania jako obiekt, aby były one dostępne dla komponenty wywołującej.

Użycie hooka w komponencie

Teraz, gdy stworzyłeś swój hook, możesz go użyć w swoim komponencie. Importuj useJsonFetch do swojego komponentu i użyj destrukturyzacji, aby uzyskać te wartości.

Następnie możesz zaimplementować wskaźnik ładowania, sprawdzając ładowanie, i wyświetlić dane, które pobrano, gdy są dostępne.

Dzięki użyciu useJsonFetch możesz zachować logiczne oddzielenie między pobieraniem danych a logiką interfejsu użytkownika, co znacznie poprawia utrzymanie twoich komponentów.

Podsumowanie dotyczące tworzenia niestandardowych hooków

Tworzenie niestandardowych hooków jest procesem prostym, ale skutecznym, który pomaga w organizacji twojego kodu. Możesz spakować logikę do ponownego użycia i zaimplementować ją w każdej komponencie, która potrzebuje tej samej funkcjonalności. Dzięki użyciu niestandardowych hooków możesz również oddzielić żądanie sieciowe i reakcję na stany ładowania lub błędu od prezentacji danych.

Podsumowanie

Z własnym hookiem, jak useJsonFetch, uczysz się, jak zarządzać asynchronicznymi żądaniami danych w React. Poprawia to znacznie możliwości ponownego używania i strukturę twojego kodu. Widziałeś, jak możesz zbudować prostą strukturę do pobierania danych JSON i skutecznie zarządzać różnymi stanami.