Redux-Saga
2 minuty czytania
Redux-Saga to biblioteka, która pozwala na łatwiejsze zarządzanie asynchronicznymi akcjami w aplikacjach opartych na Redux. Jest to narzędzie szczególnie przydatne w przypadku skomplikowanych projektów.
Redux-Saga jest biblioteką służącą do zarządzania stanem aplikacji. Instaluje się jako middleware do Reduxa podobnie jak Redux-Thunk, ale składnia za pomocą którą się je wywołuje jest inna.
W Redux-Saga został wykorzystany dość stary koncept generatorów, który pojawił się razem z promisami na konferencji JS w 2013 roku, ale do tej pory nie był i nadal nie jest popularnym rozwiązaniem. Wydaje się dość trudny na początku do zrozumienia, ale rozwiązuje wiele problemów w postaci chociażby tzw. Callback Hell, czyli zagnieżdżonych w sobie wielu zapytań zwracających rezultaty.
Słowa kluczowe w Redux-Saga
Redux-Saga w swojej składni wykorzystuje słowa kluczowe, takie jak:
call, put, takeEvery, takeLatest, all
Każde z tych słów kluczowych jest wykorzystywane w funkcji będącej generatorem, zwracającej obiekty zwane Efektami.
Najprostszym przykładem będzie zapytanie API. W tym zapytaniu pobierzemy listę produktów do naszego sklepu e-commerce, tak by komponent, który wykorzystuję zmienną z listą produktów automatycznie się przeładował.
// saga.js
import { call, takeLatest, all } from 'redux-saga/effects'
function* fetchProducts() {
const products = yield call(Api.fetch, '/products')
}
function* actionWatcher() {
yield takeLatest('GET_PRODUCTS', fetchProducts)
}
export default function* rootSaga() {
yield all([
actionWatcher(),
]);
}
// app.js
const sagaMiddleware = createSagaMiddleware();
const store = createStore(
reducer,
applyMiddleware(sagaMiddleware),
);
sagaMiddleware.run(rootSaga);
Działanie Redux Saga składa się z następujących elementów:
1. Tworzony jest store Reduxowy i do niej podłączamy nasz sagaMiddleware
2. RootSaga za pomocą słowa kluczowego all przyjmuje listę innych obiektów saga na które nasłuchuje.
3. ActionWatcher korzystając z takeLatest nasłuchuje na zmiany w akcji reduxowej o nazwie GET_PRODUCTS
4. Komponent korzystając z Reduxa wywołuję akcję reduxową
5. Wywoływany jest generator saga fetchProducts .
Korzystanie z takeLatest jest o tyle ciekawe, że gdy ta sama akcja będzie wywołana ponownie to poprzednia zostanie anulowana. Istnieje wiele innych elementów wbudowanych w Saga, które pomagają zarządzać asynchronicznością takich jak: debounce, throttle, delay.
Zalety korzystania z Redux-Saga
- Jedną z głównych zalet jest łatwość w zarządzaniu skomplikowanymi sekwencjami asynchronicznych operacji. Dzięki zastosowaniu generatorów i efektów umożliwia tworzenie wyrafinowanych struktur zarządzania asynchronicznością, co znacznie ułatwia pracę z danymi, które pochodzą z różnych źródeł, takich jak API lub WebSocket'y.
- Kolejną zaletą jest jego łatwość w testowaniu. Dzięki temu, że logika asynchroniczna jest odseparowana od samej aplikacji, możliwe jest łatwe i dokładne testowanie modułów Redux-Saga, co z kolei prowadzi do większej pewności, że aplikacja działa tak, jak powinna.
- Warto również zwrócić uwagę na skalowalność Redux-Saga. Ta biblioteka jest zaprojektowana w taki sposób, aby umożliwić łatwe dodawanie nowych funkcjonalności do aplikacji, co sprawia, że jest idealna do zastosowania w większych projektach.
- Ostatnią zaletą jest jej elastyczność. Dzięki temu, że biblioteka opiera się na generatorach, możliwe jest tworzenie różnych typów sekwencji asynchronicznych operacji, co pozwala na dostosowanie Redux-Saga do konkretnych potrzeb projektu.
Kiedy warto korzystać z Redux-Saga
Saga wydaje się być dobrym zamiennikiem dla Redux-Thunków i warto spróbować ją samemu we własnym projekcie. Przydaje się w szczególności wtedy, gdy mamy do czynienia ze skomplikowanym interface'm i wieloma akcjami. Słowa kluczowe czyli tzw. saga efekty rozwiązują wiele problemów związanych z asynchronicznością. Potrafią opóźnić zapytania, określić ich maksymalną częstotliwość, anulować zapytanie jak i wiele innych.
Nasza oferta
Web development
Dowiedz się więcejMobile development
Dowiedz się więcejE-commerce
Dowiedz się więcejProjektowanie UX/UI
Dowiedz się więcejOutsourcing
Dowiedz się więcejPowiązane artykuły
Testy wielowariantowe jako klucz do optymalizacji doświadczenia użytkownika
27 mar 2024
Testy wielowariantowe to potężne narzędzie, które pozwala decydować o kierunku rozwoju naszej strony www czy aplikacji mobilnej na podstawie konkretnych danych. Pozwalają one na optymalizację doświadczeń użytkownika poprzez multum różnorodnych aspektów. Właściwe zrozumienie i zastosowanie tej metodologii może przynieść wymierne korzyści dla twojego biznesu.
Ghost Button w UI: Kiedy go używać? Zasady i Praktyki Projektowania
27 mar 2024
Ghost Button jest subtelnym, ale kluczowym elementem UI, który niesie ze sobą specyfikę zastosowania. Czym jest ten tajemniczy „przycisk widmo”, kiedy i jak go używać? W tym artykule przyjrzymy się zasadom projektowania oraz praktykom dotyczącym Ghost Button, byś mógł efektywnie wykorzystać jego potencjał w swoich projektach.
Wzorzec projektowy Bridge: Definicja, zasady działania i praktyczne zastosowanie
27 mar 2024
Bridge to jeden z kluczowych wzorców projektowych, który usprawnia proces tworzenia programów. W naszym artykule przyjrzymy się, jakie są podstawowe zasady działania tego patternu, jego definicji i jak jest stosowany w praktyce, aby lepiej zrozumieć jego istotę i przewagi.
Testcontainers: Co to jest i jakie są jego główne zalety w testowaniu oprogramowania?
26 mar 2024
Testcontainers rewolucjonizują testowanie oprogramowania, zapewniając narzędzia do elastycznego i efektywnego tworzenia testów. Jest to biblioteka, która umożliwia uruchamianie różnych testów za pomocą kontenerów Docker. Testcontainers służy m.in. do tworzenia izolowanych środowisk testowych, oferując wiele kluczowych korzyści. W tym artykule przyjrzymy się definicji, kluczowych korzyściach i praktycznym zastosowaniom Testcontainers.
gTLD: Co to jest i jak wpływa na funkcjonowanie Internetu
24 mar 2024
Internet to sieć pełna domen, adresów i nazw gTLD. Jeżeli zastanawiasz się, co znaczy ten skomplikowany skrót, odpowiedź jest prosta: gTLD to element składowy każdego adresu www. W niniejszym artykule demaskujemy tajemnicę tego zagadnienia, by każdy mógł zrozumieć, jak działa sieć internetowa.
Adaptive Web Design: Zalety i korzyści zastosowania
22 mar 2024
Adaptive Web Design, związany nierozerwalnie z epoką urządzeń mobilnych, stał się filarem sukcesu nowoczesnej strony internetowej. Jego podstawą jest tworzenie stron zorientowanych na użytkownika, które dostosowują się do różnorodnych urządzeń. W świecie, gdzie odwiedzający korzystają z rozmaitych platform, rola Adaptive Web Design rośnie lawinowo, przyspieszając, i jest kluczem do osiągnięcia wyróżniającej się i skutecznej obecności online
Czym jest targetowanie behawioralne w marketingu?
22 mar 2024
Targetowanie behawioralne to silne narzędzie w arsenale strategii marketingowych, które pozwala firmom na zrozumienie i skuteczne zaspokojenie potrzeb swoich klientów. Wspiera decyzje zakupowe, analizując zachowania użytkownika, i dostarcza spersonalizowane treści, czyniąc klienta bardziej zaangażowanym.
Zobacz wszystkie artykuły