Dowiedz się, czym są sagi i jak mogą pomóc w pisaniu bardziej niezawodnego i elastycznego kodu.

React i Redux to popularne narzędzia do tworzenia stron internetowych do zarządzania stanem i tworzenia dynamicznych interfejsów użytkownika.

Dostęp do informacji może być trudny i czasochłonny, zwłaszcza w przypadku zdarzeń asynchronicznych. Redux-Saga, łatwy w użyciu pakiet oprogramowania pośredniczącego, który zarządza działaniami asynchronicznymi, może uprościć ten proces.

Dowiedz się, jak React zbudować aplikację, która pobiera dane z Redux-Saga.

Zrozumienie sagi Redux

Redux-Saga to pakiet oprogramowania pośredniego, który ułatwia zarządzanie i testowanie efektów ubocznych, takich jak dostęp do pamięci przeglądarki i asynchroniczne żądania API. Korzystanie z funkcji generatora sprawia, że ​​kod asynchroniczny wygląda na synchroniczny, co ułatwia rozumowanie i debugowanie.

Redux-Saga działa poprzez wyszukiwanie określonych działań Redux i uruchamianie sag, które są funkcjami generatora efektów ubocznych. Sagi mogą wykonywać operacje asynchroniczne, takie jak uzyskiwanie danych z interfejsu API, a następnie wysyłać nową akcję Redux w celu zaktualizowania stanu.

instagram viewer

Weźmy przykład użycia Redux-Saga do zarządzania asynchronicznymi wywołaniami API. Zacznij od utworzenia akcji Redux, która inicjuje procedurę zbierania danych:

eksportkonst FETCH_DANE = „FETCH_DANE”;

eksportkonst pobierz dane = (parametry) => ({
wpisz: FETCH_DANE,
ładunek: parametry,
});

Ładunek akcji, FETCH_DATA, zawiera wszelkie istotne parametry, takie jak punkt końcowy interfejsu API i parametry żądania.

Następnie zdefiniuj Sagę, która nasłuchuje aktywności FETCH_DATA i zbiera dane:

import { zadzwoń, włóż, weźOstatnie} z„redux-saga/efekty”;
import osie z„osi”;

eksportfunkcjonować* Pobierz DataSaga(działanie) {
próbować {
konst odpowiedź = dawać wywołanie (axios.get, akcja.payload.punkt końcowy, {
parametry: action.payload.params,
});

dawać umieścić({ typ: „FETCH_DATA_SUCCESS”, ładunek: odpowiedź.dane });
} złapać (błąd) {
dawać umieścić({ typ: „FETCH_DATA_ERROR”, ładunek: błąd });
}
}

eksportfunkcjonować* oglądaj Pobierz dane() {
dawać takeLatest (FETCH_DATA, fetchDataSaga);
}

Ta Saga wykonuje wywołanie API do osie biblioteka za pomocą dzwonić efekt. Następnie wysyła pobrane dane jako nowy ładunek akcji Redux z typem FETCH_DATA_SUCCESS. Jeśli wystąpi błąd, wysyła nową akcję Redux z obiektem błędu jako ładunkiem i typem FETCH_DATA_ERROR.

Na koniec musisz zarejestrować Sagę w sklepie Redux za pomocą oprogramowania pośredniego redux-saga:

import { ApplyMiddleware, utwórzStore} z„podwójny”;
import utwórz SagaMiddleware z„redux-saga”;
import rootReducer z'./reduktory';

konst sagaMiddleware = utwórzSagaMiddleware();
konst store = createStore (rootReducer, applyMiddleware (sagaMiddleware));
sagaMiddleware.run (watchFetchData);

Rejestrując ww oglądaj Pobierz dane Saga z nowym oprogramowaniem pośrednim instancji, ten kod tworzy inny saga redux. Oprogramowanie pośrednie jest konfigurowane w sklepie Redux za pomocą Zastosuj oprogramowanie pośrednie.

Ogólnie rzecz biorąc, Redux-Saga zapewnia silne i wszechstronne podejście do zarządzania działaniami asynchronicznymi Redux Reacta Aplikacje. Możesz usprawnić pobieranie danych i generować łatwiejszy kod do testowania, utrzymywania i aktualizowania, używając Sagas do kontrolowania błędów w kodzie.

Typowe problemy z pobieraniem danych w aplikacjach React

Istnieje kilka trudności, które programiści często napotykają podczas korzystania z pobierania danych w React. Oto kilka przykładów:

  1. Zarządzanie akcjami asynchronicznymi: Są to informacje dostarczane przez interfejs programistyczny, który śledzi niewspółbieżne operacje bez ingerencji w interfejs użytkownika (UI). Praca z kilkoma żądaniami API lub danymi zależnymi od innych danych może to utrudnić.
  2. Obsługa błędów: wywołania interfejsu API mogą zakończyć się niepowodzeniem i ważne jest, aby prawidłowo obsłużyć te błędy. Obejmuje to dostarczanie użytkownikowi komunikatów o błędach i umożliwienie mu ponownego przesłania żądania.
  3. Aktualizowanie sklepu Redux: Należy zapisać informacje uzyskane z API w sklepie Redux, aby inne komponenty miały do ​​nich dostęp. Istotne jest, aby zaktualizować sklep bez ingerencji lub uszkodzenia już istniejących danych.

Jak używać Redux-Saga do pobierania danych w React

Używanie Redux-Saga do pobierania danych pozwala oddzielić logikę wykonywania wywołań API i radzenia sobie z odpowiedzią z komponentów React. W rezultacie możesz skupić się na renderowaniu danych i reagowaniu na interakcje użytkownika, podczas gdy Sagi obsługują asynchroniczne pobieranie danych i zarządzanie błędami.

Musisz się zarejestrować oglądaj Pobierz dane Saga z Saga Redux oprogramowanie pośredniczące do korzystania z Sag w naszym sklepie Redux:

// src/store.js
import { utwórzStore, zastosuj oprogramowanie pośredniczące } z„podwójny”;
import utwórz SagaMiddleware z„redux-saga”;
import rootReducer z'./reduktory';
import { zegarekPobierzDane} z„./saga/dataSaga”;

konst sagaMiddleware = utwórzSagaMiddleware();
konst store = createStore (rootReducer, applyMiddleware (sagaMiddleware));
sagaMiddleware.run (watchFetchData);

eksportdomyślny sklep;

Ten kod rejestruje sagaMiddleware ze sklepem Redux za pomocą Zastosuj oprogramowanie pośrednie funkcja i utwórz SagaMiddleware metoda tzw saga redux pakiet. Następnie za pomocą uruchomić metoda, wykonuje oglądaj Pobierz dane Saga.

Twoja konfiguracja Redux-Saga jest zakończona teraz, gdy każdy komponent jest na swoim miejscu. Saga wykorzystuje tzw Pobierz API danych funkcję pobierania danych, gdy komponent React wysyła akcję FETCH_DATA_REQUEST. Jeśli zaplanowane pobieranie danych zakończy się pomyślnie, wysyła kolejne działanie z pobranymi danymi. Jeśli wystąpi błąd, wysyła nową akcję z obiektem błędu.

// src/components/DataComponent.js

import Reaguj, { useEffect } z'reagować';
import { useDispatch, useSelector } z„reakcja-redux”;
import { fetchDataRequest} z„../akcje/daneAkcje”;

konst Składnik danych = () => {
konst wysyłka = useDispatch();
konst {dane, ładowanie, błąd} = useSelector((państwo) => stan.dane);

użyjEfekt(() => {
wysyłka (fetchDataRequest({ param1: „wartość1”, param2: „wartość2” }));
}, [załatwić]);

Jeśli (ładuje się) {
powrót<dz>Ładowanie...dz>;
}

Jeśli (błąd) {
powrót<dz>Błąd: {komunikat o błędzie}dz>;
}

powrót (


{data.map((przedmiot) => (
{pozycja.nazwa}</div>
))}
</div>
);
};

eksportdomyślny Składnik danych;

W powyższym przykładzie używasz użyjSelektora podłącz swój komponent React, aby uzyskać dane, ładuje się, I błąd wartości ze sklepu Redux. Dodatkowo wysyłasz akcję FETCH_DATA_REQUEST za pomocą useEffect() hak kiedy komponent jest montowany. Renderujesz dane, ładowanie komunikatu lub komunikat o błędzie w zależności od dane wartości, ładuje się, I błąd.

Wykorzystując Redux-Saga do pobierania danych, zarządzanie asynchronicznymi żądaniami API w aplikacji React można znacznie usprawnić. Możesz tworzyć łatwiejszy w utrzymaniu i modułowy kod, izolując logikę wywołań API od swoich komponentów i zarządzając przepływem asynchronicznym w Sagas.

Najlepsze praktyki korzystania z Redux-Saga do pobierania danych

Postępuj zgodnie z tymi najlepszymi praktykami podczas korzystania z Redux-Saga do pobierania danych:

  1. Używaj odrębnych sag dla każdej operacji pobierania danych. Zaleca się oddzielenie sagi dla każdego procesu pobierania danych zamiast umieszczania całej logiki w jednej sadze. Utrzymanie i zmiana kodu jest prostsza, ponieważ można natychmiast znaleźć odpowiednie sagi dla określonych działań.
  2. Użyj wbudowanej obsługi błędów Redux-Saga. Możesz użyć bloku try/catch Redux-Saga do automatycznej obsługi błędów. Dzięki temu możemy centralnie zarządzać awariami i zapewniać użytkownikom jednolite komunikaty o błędach.
  3. Użyj sag z możliwością anulowania, aby uzyskać lepszą wydajność. Gdy używasz komponentu React, może on wywołać wiele wywołań API. Sytuacje wyścigowe i niepotrzebne wywołania interfejsu programistycznego mogą wynikać z tego wyzwalacza interfejsu API. Anulując wszelkie bieżące wywołania interfejsu API podczas wysyłania nowego żądania, możesz temu zapobiec.
  4. Korzystaj z najbardziej aktualnych danych. W przypadku wysyłania kilku żądań API dotyczących tych samych danych kluczowe jest upewnienie się, że korzystają one z najbardziej aktualnych danych. Używając najnowszy efekt, Redux-Saga pomaga Ci to osiągnąć. Efekt zapewnia, że ​​korzystasz z najnowszych lub najnowszych wywołań API i anuluje wszelkie oczekujące żądania API dotyczące tych samych danych.
  5. Użyj osobnego pliku dla sag. Powinieneś przechowywać Sagi oddzielnie od pliku sklepu Redux. W rezultacie Twoje Sagi będą łatwiejsze do kontrolowania i testowania.

Pobierz dane za pomocą Redux-Saga

Redux-Saga oferuje niezawodną i elastyczną metodę obsługi zadań asynchronicznych w aplikacjach React. Korzystając z Sagas, możesz tworzyć bardziej niezawodny, testowalny i elastyczny kod, który oddziela problemy.

Pobieranie danych może być operacją trudną i podatną na błędy, ale możesz ją uprościć z pomocą Redux-Saga. Redux-Saga poprawia wrażenia użytkownika, umożliwiając niezawodne i przewidywalne zarządzanie wieloma procesami asynchronicznymi.

Dzięki wielu zaletom i funkcjom Redux-Saga jest fantastycznym dodatkiem do Twojej kolekcji narzędzi programistycznych React.