আপনার সঠিক ধারণা আছে। আপনার উপাদান কিছু প্রপস গ্রহণ এবং রেন্ডার তুলনায় অনেক বেশি না যদি ফাংশনাল সঙ্গে যান। আপনি এগুলিকে খাঁটি ফাংশন হিসাবে ভাবতে পারেন কারণ তারা সর্বদা একই প্রপসগুলি দেওয়া হলে একইভাবে রেন্ডার এবং আচরণ করবে। এছাড়াও, তারা জীবনচক্রের পদ্ধতিগুলির বিষয়ে চিন্তা করে না বা তাদের নিজস্ব অভ্যন্তরীণ অবস্থা রয়েছে।
এগুলি হালকা হওয়ায় এই সাধারণ উপাদানগুলি কার্যকরী উপাদান হিসাবে লেখার বিষয়টি প্রমিত।
যদি আপনার উপাদানগুলির আরও কার্যকারিতা প্রয়োজন হয়, যেমন রাষ্ট্র বজায় রাখা, পরিবর্তে ক্লাস ব্যবহার করুন।
আরও তথ্য: https://facebook.github.io/react/docs/reusable-components.html#es6- শ্রেণি
সম্পাদনা : উপরের বেশিরভাগটি সত্য ছিল, প্রতিক্রিয়া হুকগুলির প্রবর্তন না হওয়া পর্যন্ত।
componentDidUpdate
সঙ্গে প্রতিলিপি করা যেতে পারে useEffect(fn)
, যেখানে fn
রেন্ডারিংয়ের উপর ফাংশনটি চালানো হবে।
componentDidMount
পদ্ধতিগুলি useEffect(fn, [])
যেখানে প্রতিলিপি করা যেতে পারেfn
রেন্ডারিংয়ের উপর ফাংশনটি চালানো হবে এবং []
অবজেক্টগুলির একটি অ্যারে রয়েছে যার জন্য উপাদানটি পুনরায় সরবরাহ করা হবে, যদি এবং কেবলমাত্র যদি পূর্ববর্তী রেন্ডার থেকে কমপক্ষে একটির মান পরিবর্তন হয়। যেহেতু কিছুই নেই, useEffect()
একবারে প্রথম রান করুন runs
state
এর সাথে প্রতিলিপি করা যেতে পারে useState()
, যার রিটার্ন মানটি রাষ্ট্রের একটি রেফারেন্সে তৈরি করা যেতে পারে এবং এমন একটি ফাংশন যা রাষ্ট্র সেট করতে পারে (যেমন,const [state, setState] = useState(initState)
)একটি উদাহরণ এটি আরও স্পষ্টভাবে ব্যাখ্যা করতে পারে:
const Counter = () => {
const [count, setCount] = useState(0)
const increment = () => {
setCount(count + 1);
}
return (
<div>
<p>Count: {count}</p>
<button onClick={increment}>+</button>
</div>
)
}
default export Counter
ক্রিয়ামূলক উপাদানগুলির উপর কখন ক্লাস ব্যবহার করবেন সে বিষয়ে পরামর্শ সম্পর্কে, ফেসবুক আনুষ্ঠানিকভাবে সুপারিশ করে যেখানেই সম্ভব ফাংশনাল উপাদানগুলি ব্যবহার । ছোট্ট হিসাবে, আমি বেশিরভাগ লোককে পারফরম্যান্সের কারণে কার্যকরী উপাদানগুলি ব্যবহার না করার বিষয়ে আলোচনা করতে শুনেছি, বিশেষত এটি
"ইভেন্ট হ্যান্ডলিং ফাংশনগুলি কার্যকরী উপাদানগুলিতে রেন্ডার অনুযায়ী পুনরায় সংজ্ঞায়িত হয়"
যদিও সত্য, আপনার উপাদানগুলি যদি এমন গতি বা ভলিউমে সত্যিই রেন্ডার করে থাকে তবে এটি বিবেচনা করার মতো হবে কিনা দয়া করে বিবেচনা করুন।
তারা হন, তাহলে আপনি ব্যবহার ফাংশন redefining প্রতিরোধ করতে পারি useCallback
এবং useMemo
আঙ্গুলসমূহ। তবে মনে রাখবেন যে এটি আপনার কোড তৈরি করতে পারে (অণুবীক্ষণিকভাবে) পারফরম্যান্সে আরও খারাপ ।
তবে সত্যি কথা বলতে, আমি কখনও প্রতিক্রিয়া অ্যাপ্লিকেশনগুলিতে ফাংশনগুলিকে বাধা হিসাবে বলতে চাইনি। অকালীন অপটিমাইজেশন হ'ল সমস্ত অশুভের মূলে - কোনও সমস্যা হলে এটিকে নিয়ে চিন্তা করুন