একটি বিকল্প উপায়, যদি আপনি প্রতিক্রিয়া-রিডেক্স ব্যবহার করেন এবং কেবলমাত্র এক জায়গায় সেই ক্রিয়াটি প্রয়োজন হয় বা এইচওসি তৈরির ক্ষেত্রে ভাল থাকেন (উচ্চতর ওডার উপাদান, আপনার যে জায়গাতেই দরকার সেখানে গুরুত্বপূর্ণ জিনিসটি এটি আপনার এইচটিএমএলকে ফুলে উঠতে পারে) তা সত্যিই বুঝতে হবে না অ্যাক্সেসটি হ'ল অতিরিক্ত পরামিতিগুলি ক্রিয়াকলাপের সাথে একত্রীকরণগুলি ব্যবহার করা :
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,
}
সামগ্রিকভাবে যদিও সম্পূর্ণ অপ্রয়োজনীয়ভাবে রিডেক্স-রক্ষণাবেক্ষণকারীরা তাদের প্যাকেজটির কার্যকারিতা প্রসারিত করে যাতে এই জাতীয় শুভেচ্ছাকে ভাল উপায়ে অন্তর্ভুক্ত করা যায়, যা বাস্তুসংস্থানের বিভাজনকে সমর্থনকারী ছাড়াই এই কার্যকারিতাগুলির জন্য একটি নিদর্শন তৈরি করে, চিত্তাকর্ষক।
ভিউক্সের মতো প্যাকেজগুলি যে এতটা জেদী নয় যে এন্টিপ্যাটার্নগুলিকে আপত্তিজনক ব্যবহার করে না কেন তারা হারিয়ে যায়, প্রায় কোনও সমস্যা রয়েছে কারণ আপনি কোনও রেডেক্স এবং সর্বোত্তম সমর্থনকারী প্যাকেজগুলির সাথে সংরক্ষণাগার রাখার চেয়ে কম বয়লারপ্লেট সহ একটি উপায় ক্লিনার সিনট্যাক্সকে সমর্থন করছেন। এবং প্যাকেজটি আরও বহুমুখী হওয়া সত্ত্বেও ডকুমেন্টেশনটি বোঝা সহজ কারণ তারা রিডুএক্স ডকুমেন্টেশনের মতো বিবরণে হারিয়ে যায় না।