क्रियाओं को एक-एक के रूप में बदलने के लिए कार्यों के बारे में सोचने की गलती है। वे वास्तव में कई से कई हैं। याद रखें कि सभी कार्यों को सभी reducers पर बुलाया जाता है।
उदाहरण के लिए, एक ही क्रिया कई राज्य परिवर्तन ट्रिगर हो सकता है:
function firstReducer(state, action) {
switch (action.type) {
case ACTION_X:
// handle action x
}
}
function secondReducer(state, action) {
switch (action.type) {
case ACTION_X:
// handle action x
}
}
function thirdReducer(state, action) {
switch (action.type) {
case ACTION_X:
// handle action x
}
}
इसके विपरीत, एक ही स्थिति परिवर्तन दो अलग-अलग कार्यों से प्रभावित हो सकती है।
function firstReducer(state, action) {
switch (action.type) {
case ACTION_X:
case ACTION_Y:
// handle action x and y in the same manner
}
}
यह एक ही तरीके से दो क्रियाओं को संचालित करने अजीब लग सकता है लेकिन यह केवल एक ही कम करने के संदर्भ में है। अन्य reducers उन्हें अलग-अलग संभालने के लिए स्वतंत्र हैं।
function secondReducer(state, action) {
switch (action.type) {
case ACTION_X:
// handle action x
case ACTION_Y:
// handle action y
}
}
function thirdReducer(state, action) {
switch (action.type) {
case ACTION_X:
// handle action x
default:
// ignore action y
}
}
इस कई से अधिक रिश्तों के साथ, यह एक कार्य पदानुक्रम के लिए बस अनावश्यक है। यदि आपके पास कई सिंक्रोनस कार्रवाइयों को फायर करने वाले एक्शन क्रिएटर हैं, तो आपका कोड अधिक जटिल और कठिन हो जाता है।
स्रोत
2016-02-18 23:12:26
आप अपने एक्शन क्रिएटर को कई सिंक्रोनस कार्यों को प्रेषित क्यों करना चाहते हैं?यह अनावश्यक संकेत और जटिलता की तरह लगता है। शायद एक बेहतर तरीका है। –
इस उपयोग को यहां वर्णित किया गया है: http://stackoverflow.com/questions/34570758/why-do-we-need-middleware-for-async-flow-in-redux एक ही क्रिया का उपभोग करने वाले मल्टीपल रेड्यूसर के बजाय मैं चाहूंगा अन्य क्रियाओं के साथ कण कार्रवाई को ट्रिगर करें (उदाहरण के लिए, {टाइप: 'DISPLAY_NOTIFICATION' को सूचित करने के लिए, टेक्स्ट: '0} –