Otkrijte što su Sage i kako vam mogu pomoći da napišete robusniji, fleksibilniji kod.

React i Redux popularni su web razvojni alati za upravljanje stanjem i razvoj dinamičkih korisničkih sučelja.

Pristup informacijama može biti težak i dugotrajan, osobito kada se radi o asinkronim događajima. Redux-Saga, međuprogramski paket jednostavan za korištenje koji upravlja asinkronim aktivnostima, može pojednostaviti ovaj proces.

Naučite kako React izraditi aplikaciju koja dohvaća podatke iz Redux-Sage.

Razumijevanje Redux-Saga

Redux-Saga je međuprogramski paket koji olakšava upravljanje i testiranje nuspojava kao što su pristup pohrani preglednika i asinkroni API zahtjevi. Korištenje funkcija generatora čini asinkroni kod sinkronim, što olakšava razmišljanje i otklanjanje pogrešaka.

Redux-Saga radi tako da traži određene Redux akcije i pokreće Sagas, koje su funkcije generatora nuspojava. Sagas može pokrenuti asinkrone operacije, kao što je dobivanje podataka iz API-ja, a zatim poslati novu Redux radnju za ažuriranje stanja.

instagram viewer

Uzmimo primjer korištenja Redux-Saga za upravljanje asinkronim API pozivima. Započnite stvaranjem Redux akcije koja pokreće postupak prikupljanja podataka:

izvozkonst FETCH_DATA = 'FETCH_DATA';

izvozkonst dohvaćanje podataka = (parametri) => ({
tip: FETCH_DATA,
nosivost: parametri,
});

Korisni teret radnje, FETCH_DATA, uključuje sve bitne parametre, poput API krajnje točke i parametara zahtjeva.

Zatim definirajte Sagu koja sluša aktivnost FETCH_DATA i prikuplja podatke:

uvoz { nazovi, stavi, uzmiNajnovije } iz'redux-saga/efekti';
uvoz axios iz'axios';

izvozfunkcija* dohvati DataSaga(akcijski) {
probati {
konst odgovor = prinos poziv (axios.get, action.payload.endpoint, {
parametri: action.payload.params,
});

prinos staviti({ tip: 'FETCH_DATA_SUCCESS', nosivost: odgovor.podaci });
} ulov (pogreška) {
prinos staviti({ tip: 'FETCH_DATA_ERROR', nosivost: pogreška });
}
}

izvozfunkcija* watchFetchData() {
prinos takeLatest (FETCH_DATA, fetchDataSaga);
}

Ova saga upućuje API poziv na axios knjižnica pomoću poziv posljedica. Zatim šalje dohvaćene podatke kao novi korisni teret Redux akcije s tipom FETCH_DATA_SUCCESS. Ako se dogodi pogreška, šalje novu Redux radnju s objektom pogreške kao korisnim opterećenjem i tipom FETCH_DATA_ERROR.

Na kraju, trebate registrirati Sagu u Redux trgovini pomoću redux-saga međuprograma:

uvoz { applyMiddleware, createStore } iz'redux';
uvoz createSagaMiddleware iz'redux-saga';
uvoz rootReducer iz'./reducers';

konst sagaMiddleware = createSagaMiddleware();
konst store = createStore (rootReducer, applyMiddleware (sagaMiddleware));
sagaMiddleware.run (watchFetchData);

Registracijom na watchFetchData Saga s novom instancom međuwarea, ovaj kod stvara drugi redux-saga. Međuprogram je postavljen na Redux trgovini pomoću ApplyMiddleware.

Redux-Saga, općenito, pruža snažan i svestran pristup za upravljanje asinkronim aktivnostima unutar Reactov Redux aplikacije. Možete pojednostaviti dohvaćanje podataka i generirati lakši kod za testiranje, održavanje i ažuriranje korištenjem Sagasa za kontrolu grešaka koda.

Uobičajeni problemi s dohvaćanjem podataka u React aplikacijama

Postoji nekoliko poteškoća s kojima se programeri često susreću dok koriste Reactovo dohvaćanje podataka. Evo nekoliko primjera:

  1. Upravljanje asinkronim radnjama: Ovo su informacije koje daje programsko sučelje koje prati nekonkurentne operacije bez ometanja korisničkog sučelja (UI). Rad s nekoliko API zahtjeva ili podataka koji se oslanjaju na druge podatke može ovo otežati.
  2. Rukovanje pogreškama: API pozivi mogu biti neuspješni i bitno je da ispravno postupate s tim pogreškama. To uključuje slanje poruka o pogrešci korisniku i dopuštanje da ponovno podnese zahtjev.
  3. Ažuriranje Redux trgovine: trebali biste spremiti informacije dobivene iz API-ja u Redux trgovini kako bi im druge komponente mogle pristupiti. Ključno je ažurirati trgovinu bez ometanja ili oštećivanja već postojećih podataka.

Kako koristiti Redux-Sagu za dohvaćanje podataka u Reactu

Korištenje Redux-Sage za dohvaćanje podataka omogućuje vam da odvojite logiku za upućivanje API poziva i rješavanje odgovora od vaših React komponenti. Kao rezultat toga, možete se usredotočiti na renderiranje podataka i reagiranje na korisničke interakcije dok Sagas upravlja asinkronim dohvaćanjem podataka i upravljanjem pogreškama.

Morate se registrirati watchFetchData Saga s Redux-Saga međuprogram za korištenje Sagas u našoj Redux trgovini:

// src/store.js
uvoz { createStore, applyMiddleware } iz'redux';
uvoz createSagaMiddleware iz'redux-saga';
uvoz rootReducer iz'./reducers';
uvoz {watchFetchData} iz'./sagas/dataSaga';

konst sagaMiddleware = createSagaMiddleware();
konst store = createStore (rootReducer, applyMiddleware (sagaMiddleware));
sagaMiddleware.run (watchFetchData);

izvozzadano trgovina;

Ovaj kod registrira sagaMiddleware s Redux trgovinom pomoću primijeniti srednji softver funkcija i createSagaMiddleware metoda redux-saga paket. Zatim, pomoću trčanje metoda, ona izvršava watchFetchData Saga.

Vaše Redux-Saga podešavanje je dovršeno sada kada su sve komponente na svom mjestu. Saga koristi dohvati DataApi funkcija za dohvaćanje podataka kada vaša React komponenta pošalje radnju FETCH_DATA_REQUEST. Ako je planirano dohvaćanje podataka uspješno, šalje drugu aktivnost s dohvaćenim podacima. Ako postoji pogreška, šalje novu akciju s objektom pogreške.

// src/components/DataComponent.js

uvoz Reagiraj, {useEffect} iz'reagirati';
uvoz {useDispatch, useSelector} iz'react-redux';
uvoz {fetchDataRequest} iz'../actions/dataActions';

konst DataComponent = () => {
konst otprema = useDispatch();
konst { data, isLoading, error } = useSelector((država) => stanje.podaci);

useEffect(() => {
slanje (fetchDataRequest({ param1: 'vrijednost1', param2: 'vrijednost2' }));
}, [otprema]);

ako (isLoading) {
povratak<div>Učitavam...div>;
}

ako (pogreška) {
povratak<div>Greška: {error.message}div>;
}

povratak (


{data.map((artikal) => (
{item.name}</div>
))}
</div>
);
};

izvozzadano DataComponent;

U gornjem primjeru koristite useSelector uključite svoju React komponentu da dobijete podatke, isLoading, i greška vrijednosti iz Redux trgovine. Dodatno šaljete radnju FETCH_DATA_REQUEST pomoću useEffect() kuka kada se komponenta montira. Vi prikazujete podatke, poruku o učitavanju ili poruku o pogrešci ovisno o podaci vrijednosti, isLoading, i greška.

Korištenjem Redux-Saga za dohvaćanje podataka, upravljanje asinkronim API zahtjevima u React aplikaciji može se znatno pojednostaviti. Možete stvoriti modularniji kod koji se lakše održava, izoliranjem logike API poziva od vaših komponenti i upravljanjem asinkronim tokom u Sagas.

Najbolje prakse za korištenje Redux-Sage za dohvaćanje podataka

Slijedite ove najbolje prakse dok koristite Redux-Saga za dohvaćanje podataka:

  1. Koristite različite sage za svaku operaciju dohvaćanja podataka. Preporučljivo je odvojiti Sagu za svaki proces dohvaćanja podataka radije nego uključiti svu logiku u jednu Sagu. Održavanje i mijenjanje koda je jednostavnije jer možete odmah pronaći relevantne Sage za određene aktivnosti.
  2. Koristite ugrađeno rukovanje greškama Redux-Saga. Možete koristiti Redux-Saga-in try/catch blok za automatsko rukovanje pogreškama. To nam omogućuje centralizirano upravljanje kvarovima i pružanje jedinstvenih poruka o greškama korisnicima.
  3. Koristite sage koje se mogu poništiti za bolju izvedbu. Kada koristite React komponentu, ona može pokrenuti mnoge API pozive. Situacije utrke i nepotrebni pozivi programskog sučelja mogu biti rezultat ovog API okidača. To možete spriječiti otkazivanjem bilo kojih API poziva koji su u tijeku kada napravite novi zahtjev.
  4. Koristite najnovije podatke. Kada postavljate nekoliko API zahtjeva za iste podatke, ključno je osigurati da koriste najnovije podatke. Koristiti najnoviji učinak, Redux-Saga vam pomaže da to postignete. Učinak osigurava da koristite najnovije ili najnovije API pozive i poništava sve API zahtjeve na čekanju za iste podatke.
  5. Koristite zasebnu datoteku za sage. Sage biste trebali držati odvojeno od datoteke Redux trgovine. Kao rezultat toga, vaše Sage će biti lakše kontrolirati i testirati.

Dohvaćanje podataka pomoću Redux-Saga

Redux-Saga nudi pouzdanu i fleksibilnu metodu za rukovanje asinkronim zadacima u React aplikacijama. Koristeći Sagas, možete stvoriti robusniji, testirani i fleksibilniji kod koji razdvaja nedoumice.

Dohvaćanje podataka može biti teška operacija sklona greškama, ali možete je pojednostaviti uz pomoć Redux-Sage. Redux-Saga poboljšava korisničko iskustvo omogućujući vam da pouzdano i predvidljivo upravljate mnogim asinkronim procesima.

Zbog brojnih prednosti i značajki, Redux-Saga je fantastičan dodatak vašoj kolekciji React razvojnih alata.