প্রথম বিষয় লক্ষণীয় যে স্টেটলেস ফাংশনাল উপাদানগুলির পদ্ধতি থাকতে পারে না, যদি এটি স্টেটলেস ফাংশনাল উপাদান হয় তবে আপনার কলিং updateবা রেন্ডারে বিশ্বাস করা উচিত নয় ।drawBall
বেশিরভাগ ক্ষেত্রে আপনাকে উপাদান ফাংশনের বাইরে ফাংশনগুলি ডিক্লেয়ার করা উচিত যাতে আপনি সেগুলি কেবল একবার ঘোষণা করেন এবং সর্বদা একই রেফারেন্সটি পুনরায় ব্যবহার করুন। আপনি যখন ভিতরে ফাংশনটি ঘোষণা করবেন তখন প্রতিবার উপাদানটি রেন্ডার করলে ফাংশনটি আবার সংজ্ঞায়িত হবে।
এমন কিছু ক্ষেত্রে রয়েছে যেখানে আপনাকে উপাদানটির ভিতরে কোনও ফাংশন সংজ্ঞায়িত করতে হবে, উদাহরণস্বরূপ, এটি ইভেন্ট হ্যান্ডলার হিসাবে নির্ধারণ করুন যা উপাদানটির বৈশিষ্ট্যের উপর ভিত্তি করে আলাদাভাবে আচরণ করে। কিন্তু এখনও তোমাকে ফাংশন বাহিরে সংজ্ঞায়িত করতে পারে Ballএবং বাঁধুন এটা properties সহযোগে, কোড অনেক ক্লিনার তৈরীর এবং উপার্জন updateবা drawফাংশন পুনর্ব্যবহারযোগ্য।
const update (propX, a, b) => { ... };
const Ball = props => (
<Something onClick={update.bind(null, props.x)} />
);
আপনি যদি হুক ব্যবহার করছেন তবে আপনি useCallbackযখন ফাংশনটির কোনও নির্ভরতা ( props.xএই ক্ষেত্রে) পরিবর্তিত হয় কেবল তখনই ফাংশনটিকে নতুন সংজ্ঞা দেওয়া হয়েছে তা নিশ্চিত করতে আপনি ব্যবহার করতে পারেন :
const Ball = props => {
const onClick = useCallback((a, b) => {
}, [props.x]);
return (
<Something onClick={onClick} />
);
}
এটি ভুল উপায় :
const Ball = props => {
function update(a, b) {
}
return (
<Something onClick={update} />
);
}
যখন ব্যবহার useCallback, সংজ্ঞায়িত updateফাংশন useCallbackহুক নিজেই আমাদের বাহিরে উপাদান সবকিছু বাদ দিয়েও একটি নকশা সিদ্ধান্ত হয়ে, আপনি পুনঃব্যবহারের যাচ্ছেন আপনি বিবেচনা করা উচিত updateএবং / অথবা আপনাকে কম্পোনেন্ট এর অবসান পরিধি অ্যাক্সেস করার দরকার হয়, উদাহরণস্বরূপ, পড়ুন / রাজ্যে লিখুন। ব্যক্তিগতভাবে আমি ডিফল্টরূপে এটি উপাদানটির অভ্যন্তরে সংজ্ঞায়িত করতে পছন্দ করি এবং কেবল প্রারম্ভিকভাবে ইঞ্জিনিয়ারিং রোধ করতে প্রয়োজন দেখা দেয় তবে এটি পুনরায় ব্যবহারযোগ্য করে তুলি। যে পুনরায় ব্যবহারের অ্যাপ্লিকেশন লজিক উপস্থাপনা উদ্দেশ্যে উপাদান রেখে, আরও নির্দিষ্ট হুক সঙ্গে ভাল সম্পন্ন করা হয়। হুক ব্যবহার করার সময় উপাদানটির বাইরে ফাংশনটি সংজ্ঞায়িত করা আপনার অ্যাপ্লিকেশন লজিকের জন্য আপনি যে প্রতিক্রিয়াটি চান তা থেকে ডিকউলিংয়ের গ্রেডের উপর নির্ভর করে।