आपके पास सही विचार है। कार्यात्मक के साथ जाओ अगर आपके घटक कुछ सहारा और रेंडर में लेने से ज्यादा नहीं करते हैं। आप इन्हें शुद्ध कार्यों के रूप में सोच सकते हैं क्योंकि वे हमेशा एक ही रंगमंच की सामग्री प्रदान करते हैं और व्यवहार करते हैं। इसके अलावा, वे जीवन चक्र के तरीकों की परवाह नहीं करते हैं या उनकी अपनी आंतरिक स्थिति नहीं है।
क्योंकि वे हल्के हैं, इन सरल घटकों को कार्यात्मक घटकों के रूप में लिखना बहुत मानक है।
यदि आपके घटकों को अधिक कार्यक्षमता की आवश्यकता होती है, जैसे कि राज्य रखना, इसके बजाय कक्षाओं का उपयोग करें।
और जानकारी: https://facebook.github.io/react/docs/reusable-components.html#es6-classes
EDIT : उपरोक्त में से बहुत कुछ सच था, जब तक रिएक्ट हुक की शुरुआत नहीं हुई।
componentDidUpdate
के साथ दोहराया जा सकता है useEffect(fn)
, जहां fn
रेंडरिंग पर चलने के लिए फ़ंक्शन है।
componentDidMount
तरीकों के साथ दोहराया जा सकता है useEffect(fn, [])
, जहां fn
रेंडरिंग पर चलने के लिए फ़ंक्शन है, और []
ऑब्जेक्ट की एक सरणी है जिसके लिए घटक रेंडर करेगा, यदि और केवल अगर पिछले रेंडर के बाद से कम से कम एक मूल्य बदल गया है। जैसा कि कोई भी नहीं है, useEffect()
पहले माउंट पर एक बार चलता है।
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
कार्यात्मक घटकों पर कक्षा का उपयोग करने के बारे में अनुशंसा के संबंध में, फेसबुक आधिकारिक तौर पर जहां भी संभव हो, कार्यात्मक घटकों का उपयोग करने की सिफारिश करता है । एक तरफ छोटे के रूप में, मैंने कई लोगों को प्रदर्शन के कारणों के लिए कार्यात्मक घटकों का उपयोग नहीं करने पर चर्चा करते हुए सुना है, विशेष रूप से
"इवेंट हैंडलिंग फ़ंक्शंस को कार्यात्मक घटकों में प्रति रेंडर पुनर्निर्धारित किया गया है"
जब तक सच है, कृपया विचार करें कि क्या आपके घटक वास्तव में इतनी गति या वॉल्यूम प्रदान कर रहे हैं कि यह चिंता का विषय होगा।
यदि वे हैं, तो आप हुक useCallback
और useMemo
हुक के उपयोग को पुनर्परिभाषित कर सकते हैं। हालांकि, ध्यान रखें कि इससे आपका कोड (सूक्ष्म रूप से) प्रदर्शन में खराब हो सकता है ।
लेकिन ईमानदारी से, मैंने रिएक्ट ऐप्स में अड़चनों को कम करने के बारे में कभी नहीं सुना है। समयपूर्व अनुकूलन सभी बुराई की जड़ है - जब यह समस्या होती है तो इस बारे में चिंता करें