আমি মনে করি যে উত্তরগুলির কোনওটিরই ক্রিস্টালাইজ করা হয়নি কেন mapDispatchToPropsকার্যকর।
এটি কেবলমাত্র container-componentপ্যাটার্নের প্রসঙ্গেই উত্তর দেওয়া যেতে পারে , যা আমি প্রথম পড়ার মাধ্যমে ভালভাবে বুঝতে পেরেছি: ধারক উপাদানগুলি তারপরে প্রতিক্রিয়া সহ ব্যবহার ।
সংক্ষেপে, আপনার componentsকেবল স্টাফ প্রদর্শন করার জন্যই উদ্বিগ্ন বলে মনে করা হচ্ছে। একমাত্র স্থান তারা তথ্য পেতে অনুমিত হয় তাদের সাজসরঞ্জাম হয় ।
"প্রদর্শন সামগ্রী" (উপাদান) থেকে পৃথক করা হল:
- আপনি কীভাবে প্রদর্শন করতে স্টাফ পাবেন,
- এবং কীভাবে আপনি ইভেন্টগুলি পরিচালনা করেন।
এটা কী containersজন্য।
অতএব, componentপ্যাটার্নটিতে একটি "ভাল ডিজাইন করা" দেখতে এটির মতো:
class FancyAlerter extends Component {
sendAlert = () => {
this.props.sendTheAlert()
}
render() {
<div>
<h1>Today's Fancy Alert is {this.props.fancyInfo}</h1>
<Button onClick={sendAlert}/>
</div>
}
}
কিভাবে এই উপাদানটি তথ্য এটি প্রদর্শন করা হয় সাজসরঞ্জাম থেকে (যা মাধ্যমে redux দোকান থেকে এসেছেন পায় দেখুন mapStateToProps) এবং এটি তার সাজসরঞ্জাম থেকে তার কর্ম ফাংশন পায়: sendTheAlert()।
যে যেখানে mapDispatchToPropsআসে: সংশ্লিষ্টcontainer
// FancyButtonContainer.js
function mapDispatchToProps(dispatch) {
return({
sendTheAlert: () => {dispatch(ALERT_ACTION)}
})
}
function mapStateToProps(state) {
return({fancyInfo: "Fancy this:" + state.currentFunnyString})
}
export const FancyButtonContainer = connect(
mapStateToProps, mapDispatchToProps)(
FancyAlerter
)
আমি অবাক হয়েছি আপনি যদি দেখতে পান তবে এখন এটিই container 1 যা রিডেক্স এবং প্রেরণ এবং স্টোর এবং স্টেট এবং ... স্টাফ সম্পর্কে জানে।
componentপ্যাটার্ন, FancyAlerter, রেন্ডারিং যে কাপড় কোন সম্পর্কে জানা প্রয়োজন যা নেই না: এটা এ কল তার পদ্ধতি পায় onClick, বোতাম তার সাজসরঞ্জাম মাধ্যমে।
এবং ... mapDispatchToPropsহ'ল দরকারী উপায় যা রিডেক্স কন্টেনারটিকে সহজেই তার প্রপসগুলিতে মোড়ানো উপাদানটিতে সেই ফাংশনটি পাস করতে দেয়।
এগুলি সমস্ত ডক্সে টোডো উদাহরণের মতো এবং এখানে অন্য একটি জবাবের মতো লাগে তবে কেন তা জোর দেওয়ার জন্য আমি প্যাটার্নের আলোকে এটি চেষ্টা করার চেষ্টা করেছি ।
(দ্রষ্টব্য: আপনি অভ্যন্তরীণ অ্যাক্সেস না পেয়েছেন এমন মৌলিক কারণে আপনি mapStateToPropsএকই উদ্দেশ্যে ব্যবহার করতে পারবেন না So সুতরাং আপনি মোড়ানো উপাদানটিকে এমন কোনও পদ্ধতি ব্যবহার করতে পারবেন না যা ব্যবহার করে । mapDispatchToPropsdispatchmapStateToPropmapStateToPropsdispatch
আমি জানি না কেন তারা এটিকে দুটি ম্যাপিং ফাংশন হিসাবে বিভক্ত করতে বেছে নিয়েছে - দু'টিই করতেই mapToProps(state, dispatch, props) আই আই ফাংশনটি করানো আরও সমৃদ্ধ হতে পারে !
1 নোট করুন যে আমি ইচ্ছাকৃতভাবে ধারকটির নাম রেখেছি FancyButtonContainer, এটি একটি "জিনিস" হাইলাইট করার জন্য - "একটি জিনিস" হিসাবে ধারকটির পরিচয় (এবং তাই অস্তিত্ব!) কখনও কখনও সংক্ষেপে হারিয়ে যায়
export default connect(...)
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
সিনট্যাক্স যা বেশিরভাগ উদাহরণে প্রদর্শিত হয়