2016-03-22 9 views
8

रेडक्स मिडलवेयर में प्रेषण और अगले के बीच क्या अंतर है?रेडक्स मिडलवेयर में प्रेषण और अगले के बीच क्या अंतर है?

export default function sampleMiddleware(store) { 
 
    return next => action => { 
 
    store.dispatch(action) 
 
    next(action) 
 
    } 
 
}

+0

यहां काफी अच्छे दस्तावेज़ हैं: http://redux.js.org/docs/advanced/Middleware.html क्या कुछ विशिष्ट है जो आपको भ्रमित करता है? –

उत्तर

10

डिस्पैच नई गतिविधि आरंभ करने और यह middlewares से भरा श्रृंखला के माध्यम से जाना है।

अगला - श्रृंखला में अगले मध्यवर्ती में वर्तमान कार्रवाई भेजें।

+0

मध्यवर्ती की "पूर्ण" श्रृंखला के माध्यम से जाने का क्या अर्थ है? तो यह #applyMiddleware जैसे कुछ से अंतिम परिणामस्वरूप कार्रवाई है जबकि #next वर्तमान बिंदु को वापस कर देगा जिस पर एक क्रिया बदल रही है? – mangocaptain

+0

@ मैंगोकैप्टन, जिस तरह से मैं इसे समझता हूं, एक मिडलवेयर के अंदर, 'अगला' अगले मिडलवेयर पर चलता है जबकि 'store.dispatch' स्थानों को मिडलवेयर पाइपलाइन की शुरुआत में कार्रवाई दी जाती है। यदि ऐसा है, तो आप 'store.dispatch' के साथ एक अनंत लूप बना सकते हैं, लेकिन आप' अगली 'के साथ नहीं कर सकते हैं। –

+0

आपका मतलब है, अगर कोई अन्य मिडलवेयर नहीं है तो यह reducer पर जाता है ... –

1
createStore(reducer, 
applyMiddleware(
middlewareA, 
middlewareB, 
middlewareC 
) 
); 

अगले (कार्रवाई) कॉलिंग middlewareB के भीतर कार्रवाई middlewareC को पारित कर दिया और उसके बाद कम करने होने के लिए कारण होगा। कॉलिंग प्रेषण (एक्शन) मिडलवेयर बी के भीतर एक्शन को मिडलवेयर ए, पर मिडलवेयर बी, फिर मिडलवेयर सी, और अंत में रेड्यूसर, पर निष्पादन को वापस मिडलवेयर पर वापस करने का कारण बन जाएगा। कॉलिंग प्रेषण() कई बार एक आम और वैध अभ्यास है। अगला() भी एक से अधिक बार बुलाया जा सकता है, लेकिन इसकी अनुशंसा नहीं की जाती है क्योंकि अगली() तक किसी भी क्रिया को पास किया जाएगा() उदाहरण के लिए, संभावित रूप से लॉगिंग मिडलवेयर को छोड़कर)।

संबंधित मुद्दे