উপাদানটিতে আমার এক বা একাধিক ইউজএফেক্ট ব্যবহার করা উচিত?


102

প্রয়োগ করার জন্য আমার কিছু পার্শ্ব প্রতিক্রিয়া রয়েছে এবং সেগুলি কীভাবে সংগঠিত করতে হয় তা জানতে চাই:

  • একক ব্যবহার হিসাবে
  • বা বেশ কয়েকটি ইউজএফেক্টস

পারফরম্যান্স এবং আর্কিটেকচারের দিক থেকে আরও ভাল কী?

উত্তর:


158

আপনার যে প্যাটার্নটি অনুসরণ করতে হবে তা আপনার ব্যবহারের উপর নির্ভর করে।

প্রথমত , আপনার এমন পরিস্থিতি হতে পারে যেখানে আপনাকে প্রাথমিক মাউন্ট চলাকালীন ইভেন্ট শ্রোতাদের যুক্ত করতে হবে এবং তাদের আনমাউন্টে পরিষ্কার করতে হবে এবং অন্য কোনও ক্ষেত্রে যেখানে নির্দিষ্ট শ্রোতাদের পরিষ্কার করতে হবে এবং প্রপ পরিবর্তনের সাথে যুক্ত করতে হবে। এরকম ক্ষেত্রে, দুটি ভিন্ন ইউজএফেক্ট ব্যবহার করে পারফরম্যান্স সুবিধা পাওয়ার পাশাপাশি প্রাসঙ্গিক যুক্তি এক সাথে রাখা আরও ভাল

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])

উপরের দ্বিতীয় এবং তৃতীয় উদাহরণের মধ্যবর্তী স্থলটি সম্পর্কে কী ?: আপনার যুক্তি রয়েছে যা রাষ্ট্র / প্রপসের একটি উপসেট পরিবর্তিত হয় তখন চলে, তবে প্রত্যেকটির পৃথক যুক্তি রয়েছে যা কিছু সাধারণ কোড ছাড়াও চালানো দরকার যা চালানো দরকার? আপনি ব্যবহার করবেন না [](কারণ এটি এখনও কেবলমাত্র রাজ্যের একটি উপসেট / প্রপসগুলির জন্য আপনি পরিবর্তনের অপেক্ষায় রয়েছেন ) তবে আপনি কোডটি পুনরায় ব্যবহার করতে চান। আপনি কি পৃথক পৃথকভাবে ব্যবহার করেন useEffectsএবং ভাগ করা কোড কোনও ফাংশনে রাখেন যে প্রত্যেকে পৃথকভাবে কল করে?
ইকো

নীচের উত্তরটির পরামর্শ অনুসারে, প্রতিক্রিয়া দল হুকগুলি উদ্বেগের সাথে পৃথক করার পরামর্শ দেয়, তাই আপনি এটিকে একাধিক useEffectকলে বিভক্ত করবেন ।
hakazvaka

28
আপনি কীভাবে ইউকে কেস লিখেছেন তা আমার পছন্দ।
ভার্টিকালগ্রেন

তারা কি সবসময় তাদের সংজ্ঞা অনুসারে ট্রিগার হয়? অর্থাৎ ইফেক্ট 1 কে সর্বদা প্রথমে বলা হয়, তারপর এফেক্ট 2?
গণনা

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.