প্রয়োগ করার জন্য আমার কিছু পার্শ্ব প্রতিক্রিয়া রয়েছে এবং সেগুলি কীভাবে সংগঠিত করতে হয় তা জানতে চাই:
- একক ব্যবহার হিসাবে
- বা বেশ কয়েকটি ইউজএফেক্টস
পারফরম্যান্স এবং আর্কিটেকচারের দিক থেকে আরও ভাল কী?
উত্তর:
আপনার যে প্যাটার্নটি অনুসরণ করতে হবে তা আপনার ব্যবহারের উপর নির্ভর করে।
প্রথমত , আপনার এমন পরিস্থিতি হতে পারে যেখানে আপনাকে প্রাথমিক মাউন্ট চলাকালীন ইভেন্ট শ্রোতাদের যুক্ত করতে হবে এবং তাদের আনমাউন্টে পরিষ্কার করতে হবে এবং অন্য কোনও ক্ষেত্রে যেখানে নির্দিষ্ট শ্রোতাদের পরিষ্কার করতে হবে এবং প্রপ পরিবর্তনের সাথে যুক্ত করতে হবে। এরকম ক্ষেত্রে, দুটি ভিন্ন ইউজএফেক্ট ব্যবহার করে পারফরম্যান্স সুবিধা পাওয়ার পাশাপাশি প্রাসঙ্গিক যুক্তি এক সাথে রাখা আরও ভাল
useEffect(() => {
// adding event listeners on mount here
return () => {
// cleaning up the listeners here
}
}, []);
useEffect(() => {
// adding listeners everytime props.x changes
return () => {
// removing the listener when props.x changes
}
}, [props.x])
দ্বিতীয়: একটি ক্ষেত্রে থাকতে পারে যেখানে আপনাকে কোনও এপিআই কল বা অন্য কোনও পার্শ্ব-প্রতিক্রিয়া ট্রিগার করতে হবে যখন কোনও সেট বা রাজ্যের বা প্রপসগুলির মধ্যে কোনও সেট পরিবর্তিত হয়। এই জাতীয় ক্ষেত্রে useEffectনিরীক্ষণের জন্য প্রাসঙ্গিক মানগুলির সাথে একক একটি ভাল ধারণা হওয়া উচিত
useEffect(() => {
// side effect here on change of any of props.x or stateY
}, [props.x, stateY])
তৃতীয়: যখন আপনার বিভিন্ন মান পরিবর্তনের বিষয়ে বিভিন্ন পদক্ষেপ গ্রহণ করা দরকার তখন একটি তৃতীয় কেস। এ জাতীয় ক্ষেত্রে প্রাসঙ্গিক তুলনা আলাদা করে আলাদা করুনuseEffects
useEffect(() => {
// some side-effect on change of props.x
}, [props.x])
useEffect(() => {
// another side-effect on change of stateX or stateY
}, [stateX, stateY])
useEffectকলে বিভক্ত করবেন ।
Reactjs.org দ্বারা প্রস্তাবিত উদ্বেগগুলি পৃথক করার জন্য আপনার একাধিক প্রভাব ব্যবহার করা উচিত https://reactjs.org/docs/hooks-effect.html#tip-use-m Multipleple-effects-to-separate-concerns
[](কারণ এটি এখনও কেবলমাত্র রাজ্যের একটি উপসেট / প্রপসগুলির জন্য আপনি পরিবর্তনের অপেক্ষায় রয়েছেন ) তবে আপনি কোডটি পুনরায় ব্যবহার করতে চান। আপনি কি পৃথক পৃথকভাবে ব্যবহার করেনuseEffectsএবং ভাগ করা কোড কোনও ফাংশনে রাখেন যে প্রত্যেকে পৃথকভাবে কল করে?