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
Windsurf – analiza kodu w czasie rzeczywistym z pomocą AI
7 lis 2025
Programiści potrzebują narzędzi, które nie tylko przyspieszają pracę, ale też pomagają utrzymać wysoką jakość kodu. Tradycyjne edytory i statyczne analizatory błędów coraz częściej ustępują miejsca inteligentnym środowiskom, które potrafią reagować na błędy w momencie ich powstawania. Jednym z najbardziej obiecujących rozwiązań tego typu jest Windsurf – IDE oparte na sztucznej inteligencji.

Czym jest Builder.io i jak działa?
5 lis 2025
W świecie, w którym liczy się szybkość działania i elastyczność w tworzeniu stron internetowych, narzędzia typu no-code stają się nieocenionym wsparciem dla firm i twórców. Jednym z najbardziej innowacyjnych rozwiązań tego typu jest Builder.io – platforma, która pozwala projektować, edytować i zarządzać stronami w sposób wizualny, bez konieczności pisania kodu.
4C marketing: Jak postawić klienta w centrum strategii
4 lis 2025
Koncepcja Marketingu 4C to najnowszy kierunek ewolucji w myśleniu marketingowym, pozwala skupić biznes tak, aby spełniał oczekiwania klienta. Tradycyjny model 4P (produkt, cena, miejsce, promocja) przechodzi metamorfozę na korzyść 4C: klienta, kosztu, komunikacji oraz wygody. Jak ta strategia zmieniła wszelkie doświadczenia transakcyjne na rynku?
Vendure: Przewodnik po nowoczesnej platformie headless dla e-commerce
3 lis 2025
W świecie nowoczesnego e-commerce coraz większą popularność zyskują rozwiązania typu headless, które zapewniają pełną swobodę w tworzeniu elastycznych i skalowalnych sklepów internetowych. Jedną z najciekawszych i najbardziej dynamicznie rozwijających się platform tego typu jest Vendure – open-source’owe rozwiązanie oparte na TypeScript i GraphQL. Dzięki modularnej architekturze i bogatemu ekosystemowi pluginów Vendure pozwala budować sklepy dopasowane do indywidualnych potrzeb biznesu.
Marketing 4E: jak budować doświadczenia, relacje i lojalność klientów
2 lis 2025
Współczesny marketing coraz mniej przypomina tradycyjną sprzedaż, a coraz bardziej - budowanie relacji opartych na emocjach, zaufaniu i doświadczeniu. Klienci nie kupują już produktów, lecz przeżycia, wartości i autentyczne historie marek. W odpowiedzi na tę zmianę powstała koncepcja Marketingu 4E, która zastępuje klasyczne 4P nowym podejściem skoncentrowanym na człowieku.
Jak AI usprawnia personalizację ofert nieruchomości i zwiększa skuteczność sprzedaży
1 lis 2025
Rynek nieruchomości przechodzi obecnie dynamiczną transformację napędzaną rozwojem sztucznej inteligencji. Technologie oparte na AI pozwalają nie tylko szybciej analizować dane i trendy, ale przede wszystkim dopasowywać oferty do indywidualnych potrzeb klientów. Dzięki temu proces sprzedaży staje się bardziej efektywny, a klienci otrzymują propozycje, które rzeczywiście odpowiadają ich oczekiwaniom.
Zobacz wszystkie artykuły