एक वैकल्पिक तरीका है, यदि आप प्रतिक्रिया-रिडक्स का उपयोग करते हैं और केवल एक ही स्थान पर उस क्रिया की आवश्यकता होती है या एचओसी (उच्चतर घटक) बनाने के साथ ठीक है, तो वास्तव में यह समझने की आवश्यकता नहीं है कि महत्वपूर्ण सामान यह है कि यह आपके html को ब्लोट कर सकता है) हर जगह आपकी ज़रूरत है उस पहुंच का उपयोग मर्जप्रॉप्स का उपयोग करना है जो अतिरिक्त मापदंडों के साथ कार्रवाई के लिए पारित किया जा रहा है:
const mapState = ({accountDetails: {stateOfResidenceId}}) => stateOfResidenceId;
const mapDispatch = (dispatch) => ({
pureUpdateProduct: (stateOfResidenceId) => dispatch({ type: types.UPDATE_PRODUCT, payload: stateOfResidenceId })
});
const mergeProps = (stateOfResidenceId, { pureUpdateProduct}) => ({hydratedUpdateProduct: () => pureUpdateProduct(stateOfResidenceId )});
const addHydratedUpdateProduct = connect(mapState, mapDispatch, mergeProps)
export default addHydratedUpdateProduct(ReactComponent);
export const OtherHydratedComponent = addHydratedUpdateProduct(OtherComponent)
जब आप मर्जप्रॉप्स का उपयोग करते हैं, तो आप जो लौटाते हैं, वह प्रॉपर में जोड़ा जाएगा, मैपस्टैट और मैपडाइस्पैच केवल मर्जप्रॉप्स के लिए तर्क प्रदान करने के लिए काम करेंगे। तो, दूसरे शब्दों में, यह फ़ंक्शन इसे आपके घटक प्रॉपर (टाइपस्क्रिप्ट सिंटैक्स) में जोड़ देगा:
{hydratedUpdateProduct: () => void}
(ध्यान रखें कि फ़ंक्शन वास्तव में क्रिया को स्वयं लौटाता है और शून्य नहीं है, लेकिन आप ज्यादातर मामलों में इसे अनदेखा करेंगे)।
लेकिन आप क्या कर सकते हैं:
const mapState = ({ accountDetails }) => accountDetails;
const mapDispatch = (dispatch) => ({
pureUpdateProduct: (stateOfResidenceId) => dispatch({ type: types.UPDATE_PRODUCT, payload: stateOfResidenceId })
otherAction: (param) => dispatch(otherAction(param))
});
const mergeProps = ({ stateOfResidenceId, ...passAlong }, { pureUpdateProduct, ... otherActions}) => ({
...passAlong,
...otherActions,
hydratedUpdateProduct: () => pureUpdateProduct(stateOfResidenceId ),
});
const reduxPropsIncludingHydratedAction= connect(mapState, mapDispatch, mergeProps)
export default reduxPropsIncludingHydratedAction(ReactComponent);
यह सहारा के लिए निम्नलिखित सामान प्रदान करेगा:
{
hydratedUpdateProduct: () => void,
otherAction: (param) => void,
accountType: string,
accountNumber: string,
product: string,
}
पूरी तरह से हालांकि पूरी तरह से असंतुलन redux-maintainers उनके पैकेज की कार्यक्षमता का विस्तार करने के लिए इस तरह की इच्छाओं को अच्छे तरीके से शामिल करने के लिए दिखाता है, जो पारिस्थितिकी तंत्र के विखंडन का समर्थन किए बिना इन कार्यक्षमताओं के लिए एक पैटर्न बनाएगा, प्रभावशाली है।
Vuex जैसे पैकेज जो इतने ज़िद्दी नहीं हैं, एंटीपार्टर्न को गाली देने वाले लोगों के साथ लगभग इतने सारे मुद्दे नहीं हैं क्योंकि वे खो जाते हैं, जबकि कम बॉयलर के साथ एक तरह से क्लीनर सिंटैक्स का समर्थन करने की तुलना में आप कभी भी रिडक्स और सर्वश्रेष्ठ सहायक पैकेज के साथ संग्रह करेंगे। और पैकेज अधिक बहुमुखी होने के बावजूद डोक्यूमेन्टेशन को समझना आसान है, क्योंकि वे विवरण में खो नहीं जाते हैं जैसे कि रेड्यूक्स प्रलेखन को जाता है।