logo
  • Proces
  • Case studies
  • Blog
  • O nas
Napisz do nas
  1. Strona główna

  2. /

    Blog

  3. /

    Redux-Thunk

Redux-Thunk

3 minuty czytania

Tomasz Kozon

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.

Spis treści

Przykładowe zapytanie w Redux-Thunk

Obsługa błędów w Redux-Thunk

Dlaczego warto używać Redux-Thunk?

Alternatywy do Redux-thunk

redux thunk ikona

Powiązane case studies

Konfigurator growbox, który sam dobiera sprzęt i wypełnia koszyk

E-commerce, Web development, UX/UI

Pokaż wszystkie case study

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.

 

Czy szukasz wykonawcy Redux-Thunk ?
logo
Sprawdź case studies

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.

Proces, Redux-Thunk

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.

 

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ęcej

Mobile development

Dowiedz się więcej

E-commerce

Dowiedz się więcej

Projektowanie UX/UI

Dowiedz się więcej

Outsourcing

Dowiedz się więcej

SEO

Dowiedz się więcej

Powiązane artykuły

Dark kitchen i catering dietetyczny: jak technologia zmienia nowoczesną gastronomię

12 cze 2026

Gastronomia w ostatnich latach przeszła cichą, ale głęboką rewolucję. Klient coraz rzadziej chce iść do restauracji, a coraz częściej oczekuje, że to dobrze zbilansowany, świeży posiłek sam trafi pod jego drzwi o właściwej porze. Na tej zmianie wyrosły dwa zjawiska, które dziś wyznaczają kierunek rozwoju całej branży, czyli dark kitchen oraz catering dietetyczny. Łączy je jedno: bez nowoczesnej technologii, integracji systemów i analizy danych po prostu nie miałyby prawa działać w skali, w jakiej działają dzisiaj.

Tomasz Kozon
#business-analysis
related-article-image-kucharz używający tableta, Dark kitchen i catering dietetyczny

Coliving i najem instytucjonalny: jak technologia zarządza społecznością

10 cze 2026

Rynek najmu w Polsce dojrzewa w tempie, którego jeszcze pięć lat temu mało kto się spodziewał. Modele takie jak coliving i najem instytucjonalny przestały być ciekawostką z Berlina czy Londynu i na dobre wpisały się w krajobraz polskich miast, oferując mieszkańcom standard obsługi porównywalny z sektorem hotelarskim. Za tą transformacją stoi technologia, która spaja w jedną całość zarządzanie budynkiem, obsługę najemcy i budowanie społeczności.

Tomasz Kozon
#business-analysis

AI w medycynie: zastosowania sztucznej inteligencji w ochronie zdrowia

8 cze 2026

Sztuczna inteligencja przestała być wizją z filmów science fiction i na dobre zagościła w gabinetach lekarskich, salach operacyjnych oraz laboratoriach diagnostycznych. Coraz więcej placówek medycznych na całym świecie wdraża rozwiązania oparte na algorytmach uczenia maszynowego, które realnie wspierają lekarzy w diagnozowaniu chorób, planowaniu leczenia oraz zarządzaniu opieką nad pacjentem.

Tomasz Kozon
#ai

Konfigurator produktów 3D w branży modowej - jak zwiększyć konwersje?

1 cze 2026

Branża modowa od kilku lat przechodzi prawdziwą transformację cyfrową, a klienci coraz rzadziej zadowalają się statycznym zdjęciem produktu i krótkim opisem w karcie sklepowej. Konfigurator produktów 3D stał się jednym z najskuteczniejszych narzędzi, które łączą świat fizyczny ze światem cyfrowym, pozwalając kupującym dosłownie projektować ubrania, buty czy akcesoria zgodnie z własnym gustem. Dla właścicieli sklepów modowych oznacza to nie tylko wyższe wskaźniki konwersji, ale także mniejszą liczbę zwrotów, większe zaangażowanie użytkowników oraz silniejszą pozycję w wyszukiwarkach.

Tomasz Kozon
#business-intelligence

AI w logistyce: automatyzacja dostaw routing i predykcja popytu

25 maj 2026

Sztuczna inteligencja przestała być w logistyce ciekawostką technologiczną i stała się realnym narzędziem przewagi konkurencyjnej. Algorytmy uczenia maszynowego planują trasy kurierów, sterują robotami w magazynach i z wyprzedzeniem przewidują, czego klienci będą potrzebować za tydzień, miesiąc czy kwartał. W efekcie firmy transportowe i dystrybucyjne skracają czas dostaw, obniżają koszty paliwa oraz redukują nadmiarowe zapasy, jednocześnie odpowiadając na rosnące oczekiwania konsumentów i wymogi środowiskowe.

Tomasz Kozon
#ai

GDS - czym jest Global Distribution System i jak hotel może z niego korzystać?

14 maj 2026

Dystrybucja w hotelarstwie od lat ewoluuje, a obok znanych każdemu portali funkcjonuje znacznie mniej oczywisty, ale niezwykle istotny kanał sprzedaży, jakim jest Global Distribution System. To właśnie GDS odpowiada za znaczną część rezerwacji w segmencie business travel i stanowi główne narzędzie pracy biur podróży, korporacyjnych działów travel oraz agentów MICE na całym świecie. Dla hoteli, które chcą skutecznie docierać do podróżujących służbowo i budować stabilne obłożenie w dni robocze, obecność w GDS bywa nie tyle dodatkową opcją, co realną przewagą konkurencyjną.

Tomasz Kozon
#business-analysis

Rezerwacja wizyt weterynaryjnych online - jak to wdrożyć w klinice?

2 maj 2026

Rezerwacja wizyt online przestała być wyróżnikiem nowoczesnych klinik weterynaryjnych i stała się czymś, czego opiekunowie zwierząt po prostu oczekują. Tradycyjny telefon do recepcji wciąż ma swoje miejsce, ale coraz częściej przegrywa z wygodą umówienia wizyty o dwudziestej drugiej, z kanapy, w kilkanaście sekund. Dla właściciela kliniki oznacza to nie tylko zmianę w sposobie komunikacji z klientami, ale też realną szansę na lepszą organizację pracy zespołu i mniejszą liczbę nieodwołanych wizyt.

Tomasz Kozon
#product-management

Zobacz wszystkie artykuły

Boring Owl Logo

Napisz do nas

Zadzwoń

+48 509 280 539

Oferta

  • Web Development

  • Mobile Development

  • UI/UX Design

  • E-commerce

  • Outsourcing

  • SEO

Menu

  • O nas

  • Case studies

  • FAQ

  • Blog

  • Kariera

  • Kontakt

Software House

  • Software House Warszawa

  • Software House Katowice

  • Software House Lublin

  • Software House Kraków

  • Software House Wrocław

  • Software House Łódź

 

  • Software House Poznań

  • Software House Gdańsk

  • Software House Białystok

  • Software House Gliwice

  • Software House Trójmiasto

Agencje SEO

  • Agencja SEO Warszawa

  • Agencja SEO Kraków

  • Agencja SEO Wrocław

  • Agencja SEO Poznań

  • Agencja SEO Gdańsk

  • Agencja SEO Toruń

© 2026 – Boring Owl – Software House Warszawa

  • adobexd logo
    adobexd
  • algolia logo
    algolia
  • amazon-s3 logo
    amazon-s3
  • android logo
    android
  • angular logo
    angular
  • api logo
    api
  • apscheduler logo
    apscheduler
  • argocd logo
    argocd
  • astro logo
    astro
  • aws-amplify logo
    aws-amplify
  • aws-cloudfront logo
    aws-cloudfront
  • aws-lambda logo
    aws-lambda
  • axios logo
    axios
  • azure logo
    azure
  • bash logo
    bash
  • bootstrap logo
    bootstrap
  • bulma logo
    bulma
  • cakephp logo
    cakephp
  • celery logo
    celery
  • chartjs logo
    chartjs
  • clojure logo
    clojure
  • cloudflare logo
    cloudflare
  • cloudinary logo
    cloudinary
  • cms logo
    cms
  • cobol logo
    cobol
  • contentful logo
    contentful
  • coolify logo
    coolify
  • cpython logo
    cpython
  • css3 logo
    css3
  • django logo
    django
  • django-rest logo
    django-rest
  • docker logo
    docker
  • drupal logo
    drupal
  • dynamodb logo
    dynamodb
  • elasticsearch logo
    elasticsearch
  • electron logo
    electron
  • expo-io logo
    expo-io
  • express-js logo
    express-js
  • fakerjs logo
    fakerjs
  • fastapi logo
    fastapi
  • fastify logo
    fastify
  • figma logo
    figma
  • firebase logo
    firebase
  • flask logo
    flask
  • flutter logo
    flutter
  • gatsbyjs logo
    gatsbyjs
  • ghost-cms logo
    ghost-cms
  • google-cloud logo
    google-cloud
  • graphcms logo
    graphcms
  • graphql logo
    graphql
  • groovy logo
    groovy
  • gtm logo
    gtm
  • gulpjs logo
    gulpjs
  • hasura logo
    hasura
  • headless-cms logo
    headless-cms
  • heroku logo
    heroku
  • html5 logo
    html5
  • httpie logo
    httpie
  • i18next logo
    i18next
  • immutablejs logo
    immutablejs
  • imoje logo
    imoje
  • ios logo
    ios
  • java logo
    java
  • javascript logo
    javascript
  • jekyll logo
    jekyll
  • jekyll-admin logo
    jekyll-admin
  • jenkins logo
    jenkins
  • jquery logo
    jquery
  • json logo
    json
  • keras logo
    keras
  • keystone5 logo
    keystone5
  • kotlin logo
    kotlin
  • kubernetes logo
    kubernetes
  • laravel logo
    laravel
  • lodash logo
    lodash
  • magento logo
    magento
  • mailchimp logo
    mailchimp
  • material-ui logo
    material-ui
  • matlab logo
    matlab
  • maven logo
    maven
  • miro logo
    miro
  • mockup logo
    mockup
  • momentjs logo
    momentjs
  • mongodb logo
    mongodb
  • mysql logo
    mysql
  • nestjs logo
    nestjs
  • net logo
    net
  • netlify logo
    netlify
  • next-js logo
    next-js
  • nodejs logo
    nodejs
  • npm logo
    npm
  • nuxtjs logo
    nuxtjs
  • open-mercato logo
    open-mercato
  • oracle logo
    oracle
  • pandas logo
    pandas
  • php logo
    php
  • postgresql logo
    postgresql
  • postman logo
    postman
  • prestashop logo
    prestashop
  • prettier logo
    prettier
  • prisma logo
    prisma
  • prismic logo
    prismic
  • prose logo
    prose
  • pwa logo
    pwa
  • python logo
    python
  • python-scheduler logo
    python-scheduler
  • rabbitmq logo
    rabbitmq
  • react-flow logo
    react-flow
  • react-hook-form logo
    react-hook-form
  • react-js logo
    react-js
  • react-native logo
    react-native
  • react-query logo
    react-query
  • react-static logo
    react-static
  • redis logo
    redis
  • redux logo
    redux
  • redux-persist logo
    redux-persist
  • redux-saga logo
    redux-saga
  • redux-thunk logo
    redux-thunk
  • relume logo
    relume
  • restful logo
    restful
  • ruby-on-rails logo
    ruby-on-rails
  • rust logo
    rust
  • rxjs logo
    rxjs
  • saleor logo
    saleor
  • salesmanago logo
    salesmanago
  • sanity logo
    sanity
  • scala logo
    scala
  • scikit-learn logo
    scikit-learn
  • scrapy logo
    scrapy
  • scrum logo
    scrum
  • selenium logo
    selenium
  • sentry logo
    sentry
  • shodan logo
    shodan
  • shopify logo
    shopify
  • slack logo
    slack
  • sms-api logo
    sms-api
  • socket-io logo
    socket-io
  • solidity logo
    solidity
  • spring logo
    spring
  • sql logo
    sql
  • sql-alchemy logo
    sql-alchemy
  • storyblok logo
    storyblok
  • storybook logo
    storybook
  • strapi logo
    strapi
  • stripe logo
    stripe
  • structured-data logo
    structured-data
  • struts logo
    struts
  • styled-components logo
    styled-components
  • supabase logo
    supabase
  • svelte logo
    svelte
  • swagger logo
    swagger
  • swift logo
    swift
  • symfony logo
    symfony
  • tailwind-css logo
    tailwind-css
  • tensorflow logo
    tensorflow
  • terraform logo
    terraform
  • threejs logo
    threejs
  • twig logo
    twig
  • typescript logo
    typescript
  • vercel logo
    vercel
  • vue-js logo
    vue-js
  • webflow logo
    webflow
  • webpack logo
    webpack
  • websocket logo
    websocket
  • woocommerce logo
    woocommerce
  • wordpress logo
    wordpress
  • yarn logo
    yarn
  • yii logo
    yii
  • zend logo
    zend
  • zeplin logo
    zeplin
  • zustand logo
    zustand