Atklājiet, kas ir Sagas un kā tās var palīdzēt rakstīt stabilāku, elastīgāku kodu.

React un Redux ir populāri tīmekļa izstrādes rīki stāvokļa pārvaldībai un dinamisku lietotāja saskarņu izstrādei.

Piekļuve informācijai var būt sarežģīta un laikietilpīga, īpaši, ja tiek risināti asinhroni notikumi. Redux-Saga, viegli lietojama starpprogrammatūras pakotne, kas pārvalda asinhronās darbības, var vienkāršot šo procesu.

Uzziniet, kā reaģēt, lai izveidotu lietojumprogrammu, kas izgūst datus no Redux-Saga.

Redux-Saga izpratne

Redux-Saga ir starpprogrammatūras pakotne, kas ļauj vienkāršāk pārvaldīt un pārbaudīt blakusparādības, piemēram, piekļuvi pārlūkprogrammas krātuvei un asinhronos API pieprasījumus. Izmantojot ģeneratora funkcijas, asinhronais kods šķiet sinhrons, tādējādi atvieglojot argumentāciju un atkļūdošanu.

Redux-Saga darbojas, meklējot konkrētas Redux darbības un aktivizējot Sagas, kas ir blakusparādību ģeneratora funkcijas. Sagas var palaist asinhronas darbības, piemēram, iegūt datus no API, un pēc tam nosūtīt jaunu Redux darbību, lai atjauninātu stāvokli.

instagram viewer

Ņemiet piemēru, izmantojot Redux-Saga, lai pārvaldītu asinhronos API zvanus. Sāciet, izveidojot Redux darbību, kas uzsāk datu vākšanas procedūru:

eksportētkonst FETCH_DATA = "FETCH_DATA";

eksportētkonst fetchData = (parametri) => ({
tips: FETCH_DATA,
kravnesība: parametri,
});

Darbības lietderīgā slodze FETCH_DATA ietver visus būtiskos parametrus, piemēram, API galapunktu un pieprasījuma parametrus.

Pēc tam definējiet Saga, kas klausās FETCH_DATA darbību un veic datu vākšanu:

imports { call, put, takeLatest } no"redux-saga/effekti";
imports axios no"aksios";

eksportētfunkciju* fetchDataSaga(darbība) {
mēģināt {
konst atbilde = raža izsaukums (axios.get, action.payload.endpoint, {
parametri: action.payload.params,
});

raža likt({ veids: "FETCH_DATA_SUCCESS", kravnesība: atbilde.dati });
} noķert (kļūda) {
raža likt({ veids: "FETCH_DATA_ERROR", kravnesība: kļūda });
}
}

eksportētfunkciju* skatītiesFetchData() {
raža takeLatest (FETCH_DATA, fetchDataSaga);
}

Šī sāga veic API izsaukumu uz axios bibliotēka, izmantojot zvanu efekts. Pēc tam tas nosūta ienestos datus kā jaunu Redux darbības lietderīgo slodzi ar veidu FETCH_DATA_SUCCESS. Ja rodas kļūda, tā nosūta jaunu Redux darbību ar kļūdas objektu kā lietderīgo slodzi un FETCH_DATA_ERROR veidu.

Visbeidzot, jums ir jāreģistrē Saga Redux veikalā, izmantojot redux-saga starpprogrammatūru:

imports { applyMiddleware, createStore } no"redux";
imports izveidot SagaMiddleware no"redux-saga";
imports rootReducer no'./reducers';

konst sagaMiddleware = izveidotSagaMiddleware();
konst veikals = createStore (rootReducer, applyMiddleware (sagaMiddleware));
sagaMiddleware.run (watchFetchData);

Reģistrējot skatītiesFetchData Saga ar jauno instanču starpprogrammatūru, šis kods izveido citu redux-saga. Starpprogrammatūra ir iestatīta Redux veikalā, izmantojot ApplyMiddleware.

Redux-Saga kopumā nodrošina spēcīgu un daudzpusīgu pieeju asinhrono darbību pārvaldībai React's Redux lietojumprogrammas. Varat racionalizēt datu iegūšanu un ģenerēt vienkāršāku kodu testēšanai, uzturēšanai un atjaunināšanai, izmantojot Sagas, lai kontrolētu koda kļūdas.

Izplatītas datu iegūšanas problēmas React lietojumprogrammās

Izmantojot React datu ielādi, izstrādātāji bieži saskaras ar dažām grūtībām. Šeit ir daži piemēri:

  1. Asinhrono darbību pārvaldība: šī ir informācija, ko nodrošina programmēšanas interfeiss, kas izseko vienlaicīgas darbības, netraucējot lietotāja interfeisu (UI). Strādājot ar vairākiem API pieprasījumiem vai datiem, kas ir atkarīgi no citiem datiem, tas var būt sarežģīts.
  2. Kļūdu apstrāde: API izsaukumi var neizdoties, un ir ļoti svarīgi pareizi rīkoties ar šīm kļūdām. Tas ietver kļūdu ziņojumu sniegšanu lietotājam un atļauju viņam atkārtoti iesniegt pieprasījumu.
  3. Redux veikala atjaunināšana: no API iegūtā informācija jāsaglabā Redux veikalā, lai citi komponenti varētu tai piekļūt. Ir ļoti svarīgi atjaunināt veikalu, neiejaucoties vai nesabojājot jau esošos datus.

Kā izmantot Redux-Saga datu ienešanai programmā React

Redux-Saga izmantošana datu ienešanai ļauj atdalīt API zvanu veikšanas loģiku un atbildes apstrādi no React komponentiem. Rezultātā varat koncentrēties uz datu renderēšanu un reaģēšanu uz lietotāju mijiedarbībām, kamēr Sagas apstrādā asinhrono datu izguvi un kļūdu pārvaldību.

Jums ir jāreģistrējas skatītiesFetchData Sāga ar Redux-Sāga Starpprogrammatūra, lai izmantotu Sagas mūsu Redux veikalā:

// src/store.js
imports { CreateStore, applyMiddleware } no"redux";
imports izveidot SagaMiddleware no"redux-saga";
imports rootReducer no'./reducers';
imports { watchFetchData } no'./sagas/dataSaga';

konst sagaMiddleware = izveidotSagaMiddleware();
konst veikals = createStore (rootReducer, applyMiddleware (sagaMiddleware));
sagaMiddleware.run (watchFetchData);

eksportētnoklusējuma veikals;

Šis kods reģistrē sagaMiddleware ar Redux veikalu, izmantojot lietot Vidusprogrammatūru funkcija un izveidot SagaMiddleware metode redux-saga iepakojums. Pēc tam, izmantojot palaist metodi, tā izpilda skatītiesFetchData Sāga.

Jūsu Redux-Saga iestatīšana ir pabeigta tagad, kad katrs komponents ir ievietots. Saga izmanto fetchDataApi funkcija, lai iegūtu datus, kad jūsu React komponents nosūta darbību FETCH_DATA_REQUEST. Ja ieplānotā datu ielāde ir veiksmīga, tā nosūta citu darbību ar ienestajiem datiem. Ja ir kļūda, tā nosūta jaunu darbību ar kļūdas objektu.

// src/components/DataComponent.js

imports Reaģēt, { useEffect } no'reaģēt';
imports { useDispatch, useSelector } no'react-redux';
imports { fetchDataRequest } no"../actions/dataActions";

konst DataComponent = () => {
konst dispatch = useDispatch();
konst { data, isLoading, error } = useSelector((Valsts) => state.data);

useEffect(() => {
dispatch (fetchDataRequest({ param1: 'value1', param2: 'value2' }));
}, [nosūtīšana]);

ja (notiek ielāde) {
atgriezties<div>Notiek ielāde...div>;
}

ja (kļūda) {
atgriezties<div>Kļūda: {error.message}div>;
}

atgriezties (


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

eksportētnoklusējuma DataComponent;

Iepriekš minētajā piemērā jūs izmantojat useSelector pievienojiet savu React komponentu, lai iegūtu datus, Notiek ielāde, un kļūda vērtības no Redux veikala. Jūs papildus nosūtāt darbību FETCH_DATA_REQUEST, izmantojot useEffect() āķis kad komponents tiek uzstādīts. Jūs renderējat datus, ielādes ziņojumu vai kļūdas ziņojumu atkarībā no datus vērtības, Notiek ielāde, un kļūda.

Izmantojot Redux-Saga datu ielādei, asinhrono API pieprasījumu pārvaldīšana React lietojumprogrammā var ievērojami racionalizēt. Varat izveidot apkopējamāku un modulārāku kodu, izolējot API izsaukuma loģiku no komponentiem un pārvaldot asinhrono plūsmu programmā Sagas.

Redux-Saga izmantošanas datu ielādei paraugprakse

Izmantojot Redux-Saga datu ielādei, ievērojiet šo paraugpraksi:

  1. Katrai datu iegūšanas darbībai izmantojiet atsevišķus Sagas. Ieteicams atdalīt sāgu katram datu iegūšanas procesam, nevis iekļaut visu loģiku vienā sāgā. Koda uzturēšana un mainīšana ir vienkāršāka, jo jūs varat nekavējoties atrast atbilstošās Sagas noteiktām darbībām.
  2. Izmantojiet Redux-Saga iebūvēto kļūdu apstrādi. Lai automātiski apstrādātu kļūdas, varat izmantot Redux-Saga try/catch bloku. Tas ļauj centralizēti pārvaldīt kļūdas un nodrošināt lietotājiem vienotus kļūdu ziņojumus.
  3. Labākai veiktspējai izmantojiet atceļamās sagas. Ja izmantojat React komponentu, tas var izraisīt daudzus API izsaukumus. Šis API aktivizētājs var izraisīt sacensību situācijas un nevajadzīgus programmēšanas interfeisa izsaukumus. Atceļot visus notiekošos API zvanus, kad veicat jaunu pieprasījumu, varat to novērst.
  4. Izmantojiet jaunākos datus. Veicot vairākus API pieprasījumus vieniem un tiem pašiem datiem, ir ļoti svarīgi nodrošināt, lai tie izmantotu jaunākos datus. Izmantojot jaunākais Redux-Saga palīdz to sasniegt. Efekts nodrošina, ka izmantojat jaunākos vai jaunākos API zvanus, un atceļ visus neapstiprinātos API pieprasījumus tiem pašiem datiem.
  5. Sagām izmantojiet atsevišķu failu. Sagas ir jāglabā atsevišķi no Redux veikala faila. Tā rezultātā jūsu Sagas būs vieglāk kontrolēt un pārbaudīt.

Iegūstiet datus, izmantojot Redux-Saga

Redux-Saga piedāvā uzticamu un elastīgu metodi asinhrono uzdevumu apstrādei React lietojumprogrammās. Izmantojot Sagas, varat izveidot stabilāku, pārbaudāmāku un elastīgāku kodu, kas nošķir problēmas.

Datu ienešana var būt sarežģīta darbība, kurā var rasties kļūdas, taču jūs varat to padarīt vienkāršāku, izmantojot Redux-Saga. Redux-Saga uzlabo lietotāja pieredzi, ļaujot uzticami un paredzami pārvaldīt daudzus asinhronos procesus.

Pateicoties daudzajām priekšrocībām un funkcijām, Redux-Saga ir lielisks papildinājums jūsu React izstrādes rīku kolekcijai.