redux middleware

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0
Kopiuj
const logAction = store =>{
    return next=>{
        return action =>{
            const result = next(action);
            console.log('middleware', result);
            return result;
        }
    }
};

Dlaczego budowanie middleware w reduxi-e tak wyglada? Pytanie zadaję z ciekawości. Natomiast nie wiem dlaczego tak wygląda to jak wygląda. Powyżej mój własny middleware. Dlaczego są 2 zagnieżdżone funkcje?

Maciej Cąderek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1264
1

Taki sposb pisania funkcji umożliwia partial application czyli dostarczanie funkcji argumentow jeden po drugim w rożnych miejscach aplikacji. W językach typowo funkcyjnych taki currying jest automatyczny. W JS, ktory jest semi-funkcyjny trzeba to zrobić jawnie jeśli chcemy z tego skorzystać. W praktyce myśl o takiej funkcji nie jako funkcji, ktora zwraca funkcję, ktora zwraca funkcję (choc to technicznie prawda) ale raczej jako o funkcji, ktra przyjmuje 3 argumenty, gdzie nie musisz ich podawać wszyskich na raz.

Coś takiego:

Kopiuj
const fnA = a => b => c => {}

// Wywołanie pełne:
const result = fnA(1)(2)(3)

jest z grubsza bardziej funkcjonalnym (pun intended) odpowiednikiem tego:

Kopiuj
const fnB = (a, b, c) => {}

// Wywołanie:
const result = fnB(1, 2, 3)

bo można tego użyć na wiele rożnych sposobow - wywołać z pierwszym parametrem, przekazać do innej funkcji, ktora doda drugi parametr i tak dalej. Taką technikę stosuje autor Reduksa.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.