2016-11-21 6 views
1

Ich bin eine Chat-Anwendung mit Redux + Middleware zu schaffen und mag Middleware zu speichern Objekte in einem lokalen Speicherobjekt verwenden, wenn eine Aktion von ADD_MESSAGE versandt wird:Redux Middleware: Wie zusätzliche Argumente zu übergeben Middleware

export function storageMiddleware(store) { 
return next => action => { 
    const result = next(action); 
    if (action.type === "ADD_MESSAGE") { 
     // Add to my storage object here 
    } 

    return result; 
}; 

}

Wenn meine Middleware gelten wie folgt:

const store = createStore(
    reducer, 
    applyMiddleware(thunk, chatMiddleware) 
) 

ich in meinem Speicher Objekt zu übergeben möchten, storage, kann aber nirgendwo in der Dokumentation finden, wie zusätzliche Argumente übergeben werden. Wie kann ich das machen?

Antwort

2

Sie müssen eine weitere Ebene der Funktionsverschachtelung hinzufügen, damit es funktioniert. redux-thunk macht das gleiche:

// Middleware definition 
function createThunkMiddleware(extraArgument) { 
    return ({ dispatch, getState }) => next => action => { 
    if (typeof action === 'function') { 
     return action(dispatch, getState, extraArgument); 
    } 

    return next(action); 
    }; 
} 

const thunk = createThunkMiddleware(); 
thunk.withExtraArgument = createThunkMiddleware; 

// Middleware usage 
const store = createStore(
    reducer, 
    applyMiddleware(thunk.withExtraArgument(api)) 
) 
Verwandte Themen