Redux-Thunk
3 minuty czytania
Redux-Thunk to biblioteka, która pozwala na wykonywanie operacji asynchronicznych w aplikacji opartej na Redux. Jest to jedno z najpopularniejszych rozszerzeń Redux, które pozwala na proste i czytelne zarządzanie stanem aplikacji.
Redux-Thunk jest dodatkiem do biblioteki Redux. Hostowany jako oddzielna paczka w NPM, jest możliwy do pobrania i ustawienia jako middleware przy inicjalizacji Redux bez skomplikowanej konfiguracji. Pozwala uzyskać asynchroniczność zapytań. Middleware'y w redux pozwalają przechwycić zapytanie i zamiast wykonać pojedynczą zmianę na storze może wykonać serię zapytań, w międzyczasie mogą odpytać API po zewnętrzne dane. Całość jest możliwa, do uzyskania bez Redux-Thunk, ale ten znacznie to ułatwia.
Przykładowe zapytanie w Redux-Thunk
Najprostszym przykładem wykorzystania Redux-Thunk będzie zapytanie do API w celu zalogowania użytkownika. Aby zapytanie przebiegło poprawnie musi wydarzyć się parę rzeczy.
1. Ustawienie stanu aplikacji, że logowanie się rozpoczęło.
2. Wysłanie zapytania do API
3. Ustawienie danych użytkownika w store
4. Ewentualne zwrócenie błędu
export const authLogin = (email, password) => {
return dispatch => {
dispatch(authStart());
axios
.post(`${API_URL}/auth/api/v1/login/`, {
email: email,
password: password
})
.then(res => {
const token = res.data.token;
const user = res.data.user;
dispatch(authSuccess(token, user));
})
.catch(err => {
dispatch(authFail(err));
});
};
};
Dzięki takiemu podejściu możemy wyizolować część logiki naszej aplikacji do pojedynczej funkcji. Możemy wykorzystać mockowanie danych z API i w pełni przetestować działanie takiego Thunka.
Obsługa błędów w Redux-Thunk
W każdej aplikacji korzystającej z asynchronicznych zapytań do API istotne jest odpowiednie zarządzanie błędami, aby zapewnić użytkownikowi jak najlepsze doświadczenie. Redux-Thunk pozwala na obsługę błędów w sposób elastyczny, umożliwiając zarówno reakcję na błędy w samych akcjach, jak i ich propagowanie do komponentów.
Jednym z kluczowych podejść jest przechwytywanie błędów bezpośrednio w funkcji thunk i aktualizowanie stanu aplikacji tak, aby można było np. wyświetlić komunikat o błędzie. Można również wykorzystać różne poziomy obsługi błędów – od prostych komunikatów po zaawansowane mechanizmy ponawiania zapytań (retry) czy globalne zarządzanie błędami.
Ważne jest także rozróżnianie typów błędów – niektóre mogą wynikać z problemów po stronie serwera (np. błędy HTTP 500), inne z braku połączenia internetowego, a jeszcze inne mogą być spowodowane niepoprawnymi danymi wejściowymi. Dzięki Redux-Thunk możliwe jest dostosowanie logiki obsługi błędów do konkretnych przypadków i odpowiednie reagowanie, np. poprzez automatyczne przekierowanie użytkownika, wyświetlenie powiadomienia lub zapisanie błędu w logach.
Dobrą praktyką jest także przechowywanie informacji o statusie zapytania w stanie Redux – dzięki temu aplikacja może dynamicznie reagować, np. poprzez wyświetlanie wskaźnika ładowania podczas przetwarzania zapytania i ukrywanie go w przypadku sukcesu lub błędu. Odpowiednia obsługa błędów w Redux-Thunk poprawia nie tylko stabilność aplikacji, ale także jej użyteczność i doświadczenie użytkownika.
Dlaczego warto używać Redux-Thunk?
Redux-Thunk to jedno z najpopularniejszych middleware do obsługi operacji asynchronicznych w Redux. Jego główną zaletą jest prostota i elastyczność w zarządzaniu żądaniami sieciowymi i innymi asynchronicznymi działaniami, które wymagają interakcji z Redux Store. Oto kilka kluczowych powodów, dla których warto używać Redux-Thunk:
- Łatwa obsługa operacji asynchronicznych
Redux sam w sobie obsługuje tylko synchroniczne akcje, co oznacza, że nie można bezpośrednio wysyłać żądań API w akcjach Redux. Redux-Thunk rozwiązuje ten problem, umożliwiając tworzenie funkcji akcji, które wykonują operacje asynchroniczne, a następnie aktualizują Store po ich zakończeniu. - Większa kontrola nad przepływem akcji
Dzięki Redux-Thunk możemy wstrzymywać, modyfikować lub anulować akcje w zależności od stanu aplikacji. Na przykład możemy zaimplementować warunek sprawdzający, czy dane są już załadowane, zanim wykonamy kolejne żądanie API, co pomaga uniknąć niepotrzebnych zapytań. - Obsługa efektów ubocznych w jednym miejscu
Redux-Thunk pozwala na scentralizowanie logiki związanej z efektami ubocznymi, takimi jak pobieranie danych, zapisywanie do lokalnej pamięci czy interakcje z API. Dzięki temu logika biznesowa nie jest rozsiana po komponentach, co sprawia, że kod jest bardziej czytelny i łatwiejszy w utrzymaniu. - Prostota w porównaniu do alternatyw
W przeciwieństwie do bardziej zaawansowanych rozwiązań, takich jak Redux-Saga czy Redux-Observable, Redux-Thunk jest stosunkowo prosty w użyciu i nie wymaga nauki dodatkowych koncepcji, takich jak generatory czy RxJS. Jest to szczególnie korzystne dla osób, które dopiero zaczynają pracę z Redux. - Łatwe testowanie akcji i reduktorów
Redux-Thunk pozwala na łatwe testowanie funkcji asynchronicznych, ponieważ możemy testować je niezależnie od komponentów. Możemy także sprawdzać, czy dane akcje zostały poprawnie wywołane i czy stan Redux Store został odpowiednio zmodyfikowany po wykonaniu zapytania.
Podsumowując, Redux-Thunk jest lekkim i skutecznym rozwiązaniem, które doskonale sprawdza się w aplikacjach React korzystających z Redux. Jego prostota, elastyczność i łatwość implementacji sprawiają, że jest jednym z najczęściej wybieranych middleware do zarządzania efektami ubocznymi.
SPRAWDŹ SWOJĄ WIEDZE Z TEMATU redux-thunk
Pytanie
1/5
Alternatywy do Redux-thunk
Alternatywą do Redux-thunk jest Context API, które jest wbudowane bezpośrednio w bibliotekę React. Zapytania asynchroniczne możemy z łatwością tam utworzyć. Praktyczną różnicę zobaczymy dopiero, gdy Context API będzie obsługiwać spory obiekt, w którym będziemy często aktualizować parametry. Może się okazać, że Context API jest wtedy mniej wydajny i zbyt często uruchamia aktualizacje DOM.
Mimo, że Redux jest oddzielną biblioteką to posiada bogatą dokumentację z dobrze opisanymi przykładami. Przykładów dla Redux-Thunk też jest dużo i jest zdecydowanie produkcyjnym rozwiązaniem do utrzymywania stanu aplikacji.
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
Aplikacje mobilne — native czy hybrydowe?
28 mar 2025
Wybór odpowiedniej technologii do tworzenia aplikacji mobilnej to jedna z pierwszych i najważniejszych decyzji w procesie projektowania produktu cyfrowego. Dylemat: aplikacja natywna czy hybrydowa – dotyczy nie tylko aspektów technicznych, ale też strategicznych, takich jak czas realizacji, budżet czy skalowalność. Każde z tych podejść ma swoje zalety i ograniczenia, a optymalny wybór zależy od celów biznesowych i oczekiwań użytkowników.

Pozycjonowanie lokalne – jak zdobyć klientów w okolicy?
28 mar 2025
Masz świetną ofertę, ale klienci z Twojej okolicy jakoś Cię nie znajdują? Zastanawiasz się, jak sprawić, by Twoja firma pojawiała się wyżej w Google, kiedy ktoś szuka usług „w pobliżu”? Lokalne pozycjonowanie to coś więcej niż tylko obecność w internecie — to sposób na bycie tu i teraz dla Twoich potencjalnych klientów. W tym artykule pokażemy Ci, jak działa lokalne SEO i co zrobić, żeby wyróżnić się w swoim mieście.
Korzyści outsourcingu programistów
28 mar 2025
W dobie dynamicznego rozwoju technologii i rosnących oczekiwań użytkowników, coraz więcej firm decyduje się na outsourcing usług IT, w tym programowania. To rozwiązanie, które pozwala nie tylko obniżyć koszty, ale także zyskać dostęp do wyspecjalizowanych kompetencji i przyspieszyć rozwój produktów cyfrowych. Dobrze zaplanowany outsourcing może być realnym wsparciem w skalowaniu biznesu i budowaniu przewagi konkurencyjnej.
Najważniejsze technologie do tworzenia aplikacji webowych na 2025 rok
27 mar 2025
Tworzenie aplikacji webowych zmienia się z roku na rok – pojawiają się nowe narzędzia, frameworki i podejścia, które ułatwiają pracę programistom i poprawiają jakość końcowych produktów. W 2025 roku szczególnie widać nacisk na wydajność, automatyzację i lepsze doświadczenia użytkownika. Technologie stają się coraz bardziej inteligentne, szybkie i dostępne. W tym artykule przedstawiamy najważniejsze trendy i rozwiązania, które kształtują web development w nadchodzącym czasie.
Dlaczego dobry UX/UI design jest kluczowy dla Twojej aplikacji?
27 mar 2025
W świecie aplikacji, gdzie użytkownik decyduje w ciągu kilku sekund, czy zostanie, czy odejdzie – design ma ogromne znaczenie. Dobry UX/UI to nie tylko kwestia estetyki, ale przede wszystkim sposób na budowanie relacji z użytkownikiem. To on decyduje o tym, czy aplikacja będzie przyjazna, zrozumiała i skuteczna. W tym artykule pokażemy, dlaczego warto potraktować UX/UI jako inwestycję, a nie dodatek.
Outsourcing IT czy własny zespół – porównanie
27 mar 2025
Decyzja o tym, kto ma stworzyć nasze oprogramowanie, staje się coraz bardziej ważna w świecie technologicznym, który stale się rozwija. Firmy, które chcą wprowadzić na rynek produkt cyfrowy, często muszą wybrać między outsourcingiem i powierzeniem projektu zewnętrznemu partnerowi, a zbudowaniem własnego zespołu IT. Każde z tych rozwiązań ma zalety i wady, a wybór zależy od strategii, tempa, zasobów i tempa działania. W tym artykule omówimy obie metody, aby pomóc Ci w podjęciu decyzji.
Wized – czym jest i jak może pomóc w tworzeniu aplikacji bez kodu?
26 mar 2025
Tworzenie aplikacji webowych nigdy nie było tak dostępne jak dziś. Dzięki narzędziom no-code takim jak Wized, możesz zbudować rozbudowaną platformę internetową bez znajomości programowania. W połączeniu z Webflow, Wized daje twórcom ogromną swobodę – łącząc estetyczny front-end z dynamiczną logiką i integracjami zewnętrznymi. Jak to wszystko działa i co właściwie można zbudować z Wized? Sprawdź poniżej.
Zobacz wszystkie artykuły