Koja je razlika između reduktora i srednjeg softvera u Reduxu?
Nov 10, 2025
Hej tamo! Kao dobavljač reduktora, često me pitaju o razlici između reduktora i međuvera u Reduxu. To je uobičajeno pitanje, posebno za one koji su novi u svijetu Reduxa i upravljanja stanjem u React aplikacijama. Dakle, hajde da zaronimo i razložimo na način koji je lak za razumevanje.
Šta je reduktor?
Prvo, razgovarajmo o reduktorima. U Reduxu, reduktor je čista funkcija koja uzima trenutno stanje i akciju kao argumente i vraća novo stanje. Zvuči jednostavno, zar ne? Pa, nekako jeste, ali je i super moćan.
Recimo da pravite aplikaciju za listu obaveza. Vaše stanje može biti niz stavki koje treba obaviti, a svaka radnja može biti nešto poput "dodavanje novog za - uradi", "označite zadatak - uradite kao dovršeno" ili "izbriši zadatak - uradi". Posao reduktora je da upravlja ovim radnjama i ažurira stanje u skladu s tim.
Evo jednostavnog primjera reduktora za našu aplikaciju za popis obaveza:
const initialState = { todos: [] }; const todoReducer = (state = initialState, action) => { switch (action.type) { case 'ADD_TODO': return { ...state, todos: [...state.todos, action.payload] }; case 'DELETE_TODO': return { ...state, todos: state.todos.filter(todo => todo.id!== action.payload) }; default: povratno stanje; } };
U ovom primjeru, kada jeADD_TODOradnja je poslata, reduktor uzima trenutno stanje, širi ga, a zatim dodaje novu stavku do - uradi usveniz. Kada jeDELETE_ALLradnja je poslana, filtrira zadatak za rad sa navedenim ID-om.


Kao dobavljač reduktora, nudimo širok asortiman visokokvalitetnih reduktora, poputTitanijum Gr7 reduktoriCirkonijum reduktor. Ovi reduktori su dizajnirani za efikasno i pouzdano rukovanje složenim zadacima upravljanja stanjem.
Šta je Middleware?
Sada, idemo na srednji softver. Middleware u Reduxu je način presretanja akcija prije nego što dođu do reduktora. Može se koristiti u različite svrhe, kao što je evidentiranje, rukovanje asinkronim operacijama ili dodavanje dodatne funkcionalnosti vašoj aplikaciji.
Jedan od najčešćih slučajeva upotrebe međuopreme je rukovanje asinhronim akcijama, kao što je upućivanje API poziva. U tradicionalnoj Redux postavci, radnje su sinhrone, što znači da se dešavaju odmah. Ali kada trebate uputiti API poziv, morate čekati odgovor. Tu dolazi srednji softver.
Popularni srednji softver za rukovanje asinhronim akcijama je Redux Thunk. Uz Redux Thunk, možete slati funkcije umjesto običnih objekata kao akcije. Ove funkcije tada mogu izvoditi asinkrone operacije i slati druge akcije kada se završe.
Evo primjera korištenja Redux Thunk za upućivanje API poziva:
import { createStore, applyMiddleware } from'redux'; import thunk from'redux - thunk'; const initialState = { podaci: null, učitavanje: lažno, greška: null }; const reduktor = (state = initialState, action) => { switch (action.type) { case 'FETCH_DATA_REQUEST': return { ...state, loading: true, error: null }; case 'FETCH_DATA_SUCCESS': povratak { ...stanje, učitavanje: lažno, podaci: action.payload }; slučaj 'FETCH_DATA_FAILURE': povratak { ...stanje, učitavanje: lažno, greška: action.payload }; default: povratno stanje; } }; const store = createStore(reducer, applyMiddleware(thunk)); const fetchData = () => { return async (dispatch) => { dispatch({ type: 'FETCH_DATA_REQUEST' }); try { const response = await fetch('https://api.example.com/data'); const data = čekaj odgovor.json(); dispatch({ tip: 'FETCH_DATA_SUCCESS', teret: podaci }); } catch (error) { dispatch({ type: 'FETCH_DATA_FAILURE', payload: error.message }); } }; };
U ovom primjeru,fetchDatafunkcija je thunk akcija. Prvo šalje aFETCH_DATA_REQUESTradnja koja označava da se podaci preuzimaju. Zatim upućuje API poziv. Ako je poziv uspješan, šalje se aFETCH_DATA_SUCCESSradnja sa podacima. Ako postoji greška, šalje aFETCH_DATA_FAILUREradnju sa porukom o grešci.
Ključne razlike
Dakle, koje su ključne razlike između reduktora i srednjeg softvera?
- Funkcionalnost: Glavni posao reduktora je ažuriranje stanja na osnovu akcija. To je čista funkcija koja uzima trenutno stanje i akciju i vraća novo stanje. S druge strane, srednji softver se koristi za presretanje radnji i dodavanje dodatne funkcionalnosti, poput rukovanja asinkronim operacijama ili evidentiranja.
- Tajming: Reduktori se pozivaju nakon što je akcija poslana i prije ažuriranja stanja. Middleware se poziva prije nego što akcija stigne do reduktora, što mu omogućava da modificira akciju ili izvrši druge zadatke.
- Vrsta funkcije: Reduktori su čiste funkcije, što znači da uvijek vraćaju isti izlaz za isti ulaz i nemaju nikakve nuspojave. Middleware mogu biti nečiste funkcije, jer mogu izvoditi nuspojave poput upućivanja API poziva ili evidentiranja.
Zašto su oba važna
I reduktori i midware su bitni dijelovi Redux aplikacije. Reduktori održavaju vaše upravljanje državom organiziranim i predvidljivim. Oni osiguravaju da se stanje vaše aplikacije mijenja na kontroliran način. Middleware, s druge strane, dodaje fleksibilnost i dodatnu funkcionalnost vašoj aplikaciji. Omogućuje vam rukovanje složenim scenarijima, poput asinhronih operacija, bez zatrpavanja vaših reduktora.
Kao dobavljač reduktora, razumijemo važnost posedovanja visokokvalitetnih reduktora koji dobro rade sa međuverskim softverom. NašTitanijum Gr7 reduktoriCirkonijum reduktordizajnirani su tako da budu kompatibilni sa širokim rasponom međuopreme, osiguravajući da vaša aplikacija radi glatko.
Zaključak
U zaključku, reduktori i midware u Reduxu služe različitim, ali komplementarnim svrhama. Reduktori su odgovorni za ažuriranje stanja, dok se srednji softver koristi za presretanje akcija i dodavanje dodatne funkcionalnosti. Razumijevanje razlike između njih je ključno za izgradnju robusnih i skalabilnih React aplikacija.
Ako ste na tržištu visokokvalitetnih reduktora, voljeli bismo čuti od vas. Bilo da radite na malom projektu ili velikoj aplikaciji, naši reduktori su dizajnirani da zadovolje vaše potrebe. Kontaktirajte nas da započnemo raspravu o nabavci i pronađemo savršen reduktor za vaš projekat.
Reference
- Redux službena dokumentacija
- Reagujte na službenu dokumentaciju
- Redux Thunk GitHub spremište
