2017-10-13 1 views
1

Nach dem Lesen sowohl auf Middleware und source code auf applyMiddleware, verstehe ich nicht, warum Middleware das Curry benötigt Syntax:Warum Curry Redux Middleware: Zustand => nächste => Aktion {} vs. (Zustand, nächste) => Aktion {}

dispatch = compose(...middleware)(middlewareAPI , store.dispatch) 
:

const logger = store => next => action => { 
    console.log('dispatching', action) 
    let result = next(action) 
    console.log('next state', store.getState()) 
    return result 
} 

konnte nicht dasselbe, indem Sie

const logger = (store, next) => action => { 
    console.log('dispatching', action) 
    let result = next(action) 
    console.log('next state', store.getState()) 
    return result 
} 

Herstellung des compose Aufruf in applyMiddleware erreicht werden

+0

Es * könnte *, aber es würde wahrscheinlich wegen der Mischung mehr verwirrend aussehen. Ist "applyMiddleware" der einzige Ort, an dem ein 'Logger' verwendet werden könnte? – Bergi

+0

Ich sehe es verwirrend @Bergi, ich kann es mir selbst und anderen besser sagen, dass eine Middleware ein Geschäft und die nächste Methode dauert, die es aufrufen muss, und es gibt Ergebnis von next() zurück. Dies macht es auch ähnlich wie "express.js" –

+1

Aber was, wenn Sie erklären müssen, dass es eine Speicherung und nächste Methode zusammennimmt und dann eine Funktion zurückgibt, die eine Aktion ausführt und ... Sie haben immer noch eine Curry-Funktion und durch * Mischen * Der Curry-Stil mit dem Tupel-Stil wird Sie verwirren, und die Frage, warum nicht einfach alles curried wurde. – Bergi

Antwort

1

Eine Diskussion mit Dan Abramov kann here diesbezüglich gefunden werden. Er sagte:

Wir haben es gemacht haben könnte = (Speicher, next)> action =>(), aber ich habe kein Problem mit nur gehen den ganzen Weg sehen. Vielleicht möchten Sie später eine Konfiguration , bei der Optionen => (speichern, next) => Aktion =>() irgendwie willkürlich aussieht.

Also nein, es ist nicht notwendig, die Parameter zu curry.

0

Nein, weil es eine Möglichkeit ist, eine später auszuführende Funktion aufzuschieben.() =>() gibt ein Funktionsobjekt zurück, das erst beim Aufruf des func-Objekts aufgerufen wird.

+1

const logger = (speichern, next) => action => {..} ist immer noch eine Deferred-Funktion. –

Verwandte Themen