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
Google Jules - asynchroniczny agent AI
26 sie 2025
Sztuczna inteligencja coraz mocniej wkracza do świata programowania, oferując narzędzia, które wspierają codzienną pracę deweloperów. Do tej grupy dołącza Google Jules - nowy asynchroniczny agent AI zaprojektowany specjalnie z myślą o kodowaniu. W przeciwieństwie do klasycznych asystentów, Jules nie wymaga ciągłej interakcji i nie przerywa toku pracy, lecz działa w tle i dostarcza sugestie wtedy, gdy są one najbardziej przydatne. To rozwiązanie, które może zmienić sposób, w jaki programiści współpracują z AI i podnieść jakość tworzonego oprogramowania.

AI Overviews: Jak działają i dlaczego zmieniają sposób wyszukiwania informacji
25 sie 2025
Wyszukiwarki internetowe przechodzą obecnie jedną z największych transformacji w swojej historii. Google, wprowadzając funkcję AI Overviews, zmienia sposób, w jaki użytkownicy docierają do informacji – zamiast listy linków dostają gotowe podsumowania odpowiedzi. To rozwiązanie oparte na sztucznej inteligencji pozwala szybciej, wygodniej i bardziej kontekstowo pozyskiwać wiedzę.
Super App: Wszystko w jednej aplikacji – czy to możliwe?
24 sie 2025
W świecie, w którym smartfon stał się centrum naszego życia, coraz częściej mówi się o koncepcji Super App – jednej aplikacji do wszystkiego. Zamiast korzystać z wielu oddzielnych narzędzi, użytkownicy mogą mieć dostęp do komunikacji, płatności, zakupów i rozrywki w jednym ekosystemie. Trend ten narodził się w Azji, gdzie aplikacje takie jak WeChat czy Alipay zrewolucjonizowały codzienne funkcjonowanie milionów osób.
Czym jest Amazon Kiro?
22 sie 2025
Amazon od lat rozwija swoje technologie, oferując użytkownikom narzędzia, które zmieniają sposób, w jaki korzystamy z internetu i oprogramowania. Najnowszym projektem giganta jest Amazon Kiro – inteligentne środowisko programistyczne oparte na sztucznej inteligencji. To rozwiązanie ma nie tylko wspierać pisanie kodu, ale też wprowadzać zupełnie nowe podejście do tworzenia aplikacji, zaczynając od specyfikacji i planowania.
Czym jest CRETech i dlaczego zmienia oblicze rynku nieruchomości komercyjnych?
21 sie 2025
Rynek nieruchomości komercyjnych przechodzi obecnie dynamiczną transformację, której motorem napędowym są nowe technologie. Pod pojęciem CRETech kryją się innowacyjne rozwiązania cyfrowe, które zmieniają sposób inwestowania, zarządzania budynkami oraz korzystania z przestrzeni biurowych. Dzięki sztucznej inteligencji, IoT, big data czy blockchain sektor staje się bardziej efektywny, transparentny i przyjazny dla użytkowników. To rewolucja, która nie tylko usprawnia procesy, ale na nowo definiuje oblicze współczesnych nieruchomości.
Co to jest Base44?
20 sie 2025
Tworzenie aplikacji jeszcze nigdy nie było tak proste, jak dziś. Dzięki sztucznej inteligencji i platformom typu no-code, nawet osoby bez doświadczenia programistycznego mogą szybko zamienić swój pomysł w działający produkt. Jednym z najciekawszych rozwiązań w tej dziedzinie jest Base44 – narzędzie, które pozwala budować aplikacje poprzez zwykłą rozmowę z AI.
Answer Engine Optimization – przyszłość wyszukiwania w erze AI
19 sie 2025
Answer Engine Optimization (AEO) otwiera nowe możliwości dla przyszłości wyszukiwania informacji, wprowadzając nową erę w technologii sztucznej inteligencji (AI). Przełom w sposobie, w jaki zrozumienie i dostarczanie odpowiedzi jest optymalizowane, wyznacza nowy kurs dla świata cyfrowego i przemysłu SEO.
Zobacz wszystkie artykuły