2016-12-28 18 views
12

मैं मैं वर्तमान में निम्न सिंटैक्स का उपयोग कर रहा है, जिसके लिए redux में एक दुकान बनाने के लिए कोशिश कर रहा था: -redux में समझौता लिखें कार्यों

const middlewares = [ 
    thunk, 
    logger 
] 

const wlStore = createStore(
    rootReducer, 
    initialState 
    compose(applyMiddleware(...middlewares)) 
) 

ऊपर ठीक मेरे लिए काम करता है और मैं दुकान हाल ही में उपयोग कर सकते हैं, लेकिन मैं मैं एक और वाक्यविन्यास में टक्कर लगी: -

const wlStore=applyMiddleware(thunk,logger)(createStore)(rootReducer) 

उनमें से दोनों एक ही काम कर रहे हैं।

क्या कोई कारण है जिसके कारण मुझे एक दूसरे को पसंद करना चाहिए? फायदे नुकसान?

उत्तर

38

बेहतर पठनीयता और सुविधा रचना का उपयोग करने के मुख्य फायदे हैं।

लिखें जब आप स्टोर में एकाधिक स्टोर बढ़ाने वाले को पास करना चाहते हैं। स्टोर एन्हांसर्स उच्च ऑर्डर फ़ंक्शन हैं जो स्टोर में कुछ अतिरिक्त कार्यक्षमता जोड़ते हैं। डिफ़ॉल्ट रूप से रेडक्स के साथ आपूर्ति की जाने वाली एकमात्र स्टोर एन्हेंसर लागू है Middleware हालांकि कई अन्य उपलब्ध हैं।

स्टोर Enhancers उच्च आदेश कार्य

हैं क्या उच्च आदेश कार्यों कर रहे हैं? Haskell docs से दूसरे शब्दों में बयान:

उच्च आदेश कार्यों मानकों के रूप में कार्य लेने के लिए और वापसी के रूप में कार्य लौट मान सकते हैं। एक समारोह उन दोनों में से किसी करता है कि एक उच्च आदेश समारोह

Redux डॉक्स से कहा जाता है:

सभी लिखें देता, है आप कोड की दाहिनी ओर बहाव के बिना गहराई से नेस्टेड समारोह परिवर्तनों लिखें। इसे बहुत अधिक क्रेडिट मत देना!

तो जब हम बजाय लिखने के लिए होने के बारे में हमारी उच्च आदेश कार्य (दुकान वर्धक) श्रृंखला

func1(func2(func3(func4)))) 

हम सिर्फ लिख सकता है

compose(func1, func2, func3, func4) 

कोड की इन दो पंक्तियों को एक ही बात करते हैं । यह केवल वाक्यविन्यास है जो अलग है।

Redux उदाहरण

Redux docs से अगर हम रचना का उपयोग नहीं करते हम

finalCreateStore = applyMiddleware(middleware)(
     require('redux-devtools').devTools()(
     require('redux-devtools').persistState(window.location.href.match(/[?&]debug_session=([^&]+)\b/))() 
    ) 
    )(createStore); 

होता जबकि यदि हम का उपयोग

finalCreateStore = compose(
    applyMiddleware(...middleware), 
    require('redux-devtools').devTools(), 
    require('redux-devtools').persistState(
     window.location.href.match(/[?&]debug_session=([^&]+)\b/) 
    ) 
)(createStore); 

रचना पढ़ने के लिए रेडक्स की रचना के बारे में अधिक जानकारी फ़ंक्शन click here

+2

शानदार सारांश .... –