2016-12-14 2 views
2

Я читаю исходный код applyMiddleware, и в некоторых фрагментах они называют это таким образом applyMiddleware(...middleware). Итак, когда передается параметр next?Что такое `next` в applyMiddleware()?

export default function applyMiddleware(...middlewares) { 
    return (next) => 
    (reducer, initialState) => { 
     var store = next(reducer, initialState); 
     var dispatch = store.dispatch; 
     var chain = []; 

     var middlewareAPI = { 
      getState: store.getState, 
      dispatch: (action) => dispatch(action) 
     }; 

     chain = middlewares.map(middleware => middleware(middlewareAPI)); 

     dispatch = compose(...chain, store.dispatch); 
     return { 
      ...store, 
      dispatch 
     }; 
    }; 
} 
+0

Вы читаете [** 'applyMiddleware' **] (http://redux.js.org/docs/api/applyMiddleware.html) docs? –

ответ

0

Каждого middleware в middlewares имеет этот общий формат:

// condensed, does not do anything, just calls the next middleware 
function middleware({ getState }) => (next) => (action) => next(action) 

or 

// expanded, does not do anything, just calls the next middleware 
function middleware({ getState }) { 
    return function (next) { 
    return function (action) { 
     return next(action) 
    } 
    } 
} 

промежуточное программную функция возвращает функцию, возвращающую функцию вызывающую следующие промежуточные ПО должна там быть любым.

Чтобы ответить на ваш вопрос, next передается как аргумент второй функции. Таким образом, создатель магазина applyMiddleware может вызвать следующее промежуточное программное обеспечение в цепочке. Синтаксис промежуточного программного обеспечения немного запутанный (от docs):

Промежуточное программное обеспечение звучит намного сложнее, чем оно есть на самом деле. Единственный способ понять промежуточное программное обеспечение - посмотреть, как работает существующее промежуточное программное обеспечение , и попытаться написать свой собственный. Функция nesting может быть пугающей, но большая часть промежуточного программного обеспечения, которую вы найдете, это, по сути, 10-лайнеры , а вложенность и составность - вот что делает систему промежуточного программного обеспечения мощной.

Смежные вопросы