KoderKoder.ai
प्राइसिंगएंटरप्राइज़शिक्षानिवेशकों के लिए
लॉग इनशुरू करें

उत्पाद

प्राइसिंगएंटरप्राइज़निवेशकों के लिए

संसाधन

हमसे संपर्क करेंसपोर्टशिक्षाब्लॉग

कानूनी

प्राइवेसी पॉलिसीउपयोग की शर्तेंसुरक्षास्वीकार्य उपयोग नीतिदुरुपयोग रिपोर्ट करें

सोशल

LinkedInTwitter
Koder.ai
भाषा

© 2026 Koder.ai. सर्वाधिकार सुरक्षित।

होम›ब्लॉग›कैसे React ने कम्पोनेंट्स के साथ फ्रंटेंड आर्किटेक्चर बदल दिया
22 दिस॰ 2025·8 मिनट

कैसे React ने कम्पोनेंट्स के साथ फ्रंटेंड आर्किटेक्चर बदल दिया

React ने कंपोनेंट-आधारित UI, घोषणात्मक रेंडरिंग और स्टेट-ड्रिवन दृश्य लोकप्रिय किए—जिससे टीमें पेज-केंद्रित कोड से reusable सिस्टम और पैटर्न की ओर बढ़ीं।

कैसे React ने कम्पोनेंट्स के साथ फ्रंटेंड आर्किटेक्चर बदल दिया

React के आने से क्या बदला

React सिर्फ़ एक लाइब्रेरी नहीं लाया—इसने यह बदल दिया कि टीमें “फ्रंटेंड आर्किटेक्चर” से क्या मतलब निकालती हैं। व्यावहारिक रूप से, फ्रंटेंड आर्किटेक्चर वे फैसले हैं जो UI कोडबेस को स्केल पर समझने योग्य बनाए रखते हैं: आप UI को कैसे हिस्सों में बाँटते हैं, डेटा वहां से कैसे चलता है, स्टेट कहाँ रहता है, साइड-इफेक्ट्स (जैसे डेटा फेच करना) कहां हैं, और कैसे आप परिणाम को टेस्टेबल और टीम में सुस्पष्ट रखते हैं।

एक वाक्य में component thinking

कम्पोनेंट थिंकिंग का मतलब है हर UI टुकड़े को एक छोटा, पुन:प्रयोगयोग्य यूनिट मानना जो अपनी रेंडरिंग का मालिक हो और अन्य यूनिट्स के साथ मिलकर पूरे पेज बनाए।

React ने किस तरह शिफ्ट करवाई

React के लोकप्रिय बनने से पहले कई प्रोजेक्ट पेज-आधारित और DOM मैनिपुलेशन पर केंद्रित थे: “इस एलिमेंट को ढूँढो, टेक्स्ट बदलो, यह क्लास टॉगल करो।” React ने टीमों को एक अलग डिफ़ॉल्ट की तरफ धकेला:

  • स्टेट-ड्रिवन UI: आप स्टेट अपडेट करते हैं, और UI अपने आप अपडेट हो जाता है।
  • वायरिंग के बजाय कंपोज़िशन: आप स्क्रीन को कम्पोनेंट्स नेस्ट करके असेंबल करते हैं बजाय अलग-अलग फाइलों में व्यवहार जोड़ने के।
  • रियूज़ को प्राथमिक लक्ष्य बनाना: सामान्य UI पैटर्न कम्पोनेंट बन जाते हैं बजाय कॉपी-पेस्ट मार्कअप के।

इन विचारों ने रोज़मर्रा के काम को बदल दिया। कोड रिव्यूज़ अब पूछने लगे, “यह स्टेट कहाँ होना चाहिए?” बजाय “आपने कौन सा सेलेक्टर इस्तेमाल किया?” डिजाइनर और इंजीनियर एक साझा कम्पोनेंट शब्दावली पर मेल खा सके, और टीम बिना पूरे पेज फिर से लिखे UI बिल्डिंग ब्लॉक्स की लाइब्रेरी बना सकी।

React से भी बड़ा प्रभाव

भविष्य में अगर टीम किसी और फ्रेमवर्क पर गई भी, React के आकार दिए आदतें बनी रहीं: कम्पोनेंट-आधारित आर्किटेक्चर, घोषणात्मक रेंडरिंग, पूर्वानुमेय डेटा फ्लो, और एक-ऑफ पेज कोड के बजाय रीयूज़ेबल डिज़ाइन सिस्टम। React ने इन पैटर्न्स को सामान्य बना दिया—और इसका प्रभाव व्यापक फ्रंटेंड इकोसिस्टम पर पड़ा।

React से पहले: पेज-केंद्रित UI और DOM-प्रथम कोड

React से पहले कई टीमें इंटरफेस को पेज के इर्द-गिर्द बनाती थीं, न कि पुन:प्रयोगयोग्य UI यूनिट्स के। एक आम सेटअप सर्वर-रेंडर किए टेम्पलेट्स (PHP, Rails, Django, JSP इत्यादि) था जो HTML बनाते थे, और इंटरैक्टिविटी के लिए ऊपर jQuery छिड़का होता था।

सामान्य स्टैक: टेम्पलेट्स + jQuery + प्लगइन्स

आप पेज रेंडर करते, फिर उसे स्क्रिप्ट्स से “एक्टिवेट” करते: datepickers, modal प्लगइन्स, फॉर्म वेलिडेटर्स, कैरोसेल—हर एक का अपना मार्कअप और इवेंट हुक होता था।

कोड अक्सर ऐसा दिखता: एक DOM नोड ढूँढो, हैंडलर अटैच करो, DOM म्यूटेट करो, और उम्मीद करो कि कुछ और टूटेगा नहीं। UI बढ़ने पर "सच्चाई का स्रोत" चुपचाप DOM बन जाता था।

व्यवहार परतों में बिखरा हुआ

UI व्यवहार शायद ही कभी एक जगह रहता। यह बंटा रहता था:

  • सर्वर व्यूज़ (कंडिशनल रेंडरिंग, पार्टियल्स, फीचर फ्लैग)
  • HTML (data-* एट्रिब्यूट्स, इनलाइन हैंडलर्स, छिपे फील्ड्स)
  • JavaScript (jQuery सेलेक्टर्स, ग्लोबल स्टेट, प्लगइन इनिशियलाइज़ेशन)

एक विजेट—मान लीजिए एक चेकआउट सारांश—आंशिक रूप से सर्वर पर बन सकता था, AJAX से आंशिक रूप से अपडेट होता और किसी प्लगइन द्वारा नियंत्रित भी हो सकता था।

सामान्य पीड़ा बिंदु

यह तरीका छोटी संवर्धनों के लिए काम करता था, पर इसने बार-बार समस्याएँ पैदा कीं:

  • डुप्लिकेटेड UI: वही “कम्पोनेंट” कई टेम्पलेट और पेजों में दुबारा बना हुआ
  • असंगत स्टेट: लोडिंग स्पिनर, डिसेबल बटन और एरर मैसेज सिंक से बाहर
  • नाज़ुक DOM कोड: छोटे मार्कअप बदलाव से सेलेक्टर्स और इवेंट वायरिंग टूट जाना

शुरुआती MV* ब्रिज

Backbone, AngularJS, और Ember जैसे फ्रेमवर्क्स ने मॉडल, व्यू और राउटिंग के साथ संरचना लाने की कोशिश की—अक्सर एक बड़ी सुधार। पर कई टीमों ने पैटर्न मिलाए रखे, और UI को दोहराने योग्य यूनिट्स के रूप में बनाने का एक सरल तरीका चाहिए था।

बड़ा विचार: UI = स्टेट का फ़ंक्शन

React का सबसे महत्वपूर्ण बदलाव सरल कहने में है और व्यवहार में आश्चर्यजनक रूप से शक्तिशाली है: UI स्टेट का एक फ़ंक्शन है। DOM को “सच्चाई का स्रोत” मानकर उसे सिंक में रखने के बजाय, आप अपने डेटा को सच्चाई मानते हैं और UI को उसका परिणाम बनने देते हैं।

रोज़मर्रा की ऐप्स में “स्टेट” का मतलब

स्टेट बस वही करंट डेटा है जिस पर आपकी स्क्रीन निर्भर करती है: मेन्यू खुला है या नहीं, फॉर्म में क्या टाइप हुआ है, लिस्ट में कौन-सी आइटम्स हैं, कौन सा फ़िल्टर चुना है।

जब स्टेट बदलती है, आपको पेज में कई DOM नोड्स को अपडेट करने की तलाश नहीं करनी पड़ती। आप स्टेट अपडेट करते हैं, और UI फिर से रेंडर होकर उससे मेल खा लेता है।

यह मैन्युअल DOM काम क्यों घटाता है

पारंपरिक DOM-प्रथम कोड अक्सर बिखरे हुए अपडेट लॉजिक के साथ समाप्त होता:

  • चेकबॉक्स बदला → लेबल अपडेट करो
  • आइटम जोड़ा → लिस्ट और खाली-राज्य संदेश अपडेट करो
  • फॉर्म सबमिट → बटन डिसेबल करो, स्पिनर दिखाओ, एरर संभालो

React के मॉडल में, ये “अपडेट्स” आपकी रेंडर आउटपुट की शर्तें बन जाते हैं। स्क्रीन किसी दिए गए स्टेट के लिए क्या दिखना चाहिए का पढ़ने योग्य वर्णन बन जाती है। इससे स्क्रीन सोचने, टेस्ट करने और विकसित करने में आसान होती है।

एक छोटा परिचित उदाहरण

function ShoppingList() {
  const [items, setItems] = useState([]);
  const [text, setText] = useState("");

  const add = () => setItems([...items, text.trim()]).then(() => setText(""));

  return (
    <section>
      <form onSubmit={(e) => { e.preventDefault(); add(); }}>
        <input value={text} onChange={(e) => setText(e.target.value)} />
        <button disabled={!text.trim()}>Add</button>
      </form>

      {items.length === 0 ? <p>No items yet.</p> : (
        <ul>{items.map((x, i) => <li key={i}>{x}</li>)}</ul>
      )}
    </section>
  );
}

ध्यान दें कि खाली संदेश, बटन का डिसेबल स्टेट और लिस्ट कंटेंट सब items और text से निकले हुए हैं। यही आर्किटेक्चरल लाभ है: डेटा की आकार और UI की संरचना संरेखित होती है, जिससे स्क्रीन समझने, टेस्ट करने और बदलने में आसान हो जाती हैं।

कम्पोनेंट्स: नए बिल्डिंग ब्लॉक्स

React ने “कम्पोनेंट” को UI कार्य की डिफॉल्ट यूनिट बना दिया: एक छोटा, पुन:प्रयोगयोग्य टुकड़ा जो मार्कअप, व्यवहार, और स्टाइलिंग हुक्स को एक साफ़ इंटरफ़ेस के पीछे बांधता है।

HTML टेम्पलेट्स, इवेंट लिस्नर्स और CSS सेलेक्टर्स को अलग-अलग फाइलों में बिखेरने के बजाय, एक कम्पोनेंट चलती चीज़ों को नज़दीक रखता है। इसका मतलब यह नहीं कि सब कुछ एक फ़ाइल में होना चाहिए—बल्कि यह कि कोड यूज़र के देखने और करने के आधार पर व्यवस्थित होता है, न कि DOM API के आधार पर।

एक कम्पोनेंट असल में क्या होता है

एक व्यावहारिक कम्पोनेंट आमतौर पर शामिल करता है:

  • स्ट्रक्चर (क्या रेंडर करता है)
  • इंटरैक्शन (हैंडलर्स, स्टेट, इफ़ेक्ट्स)
  • स्टाइलिंग हुक्स (क्लास नेम, वेरिएंट्स, टोकन्स)

महत्वपूर्ण बदलाव यह है कि आप “इस div को अपडेट करो” सोचना बंद कर देते हैं और “इस स्टेट में बटन को डिसेबल स्टेट में रेंडर करो” सोचना शुरू करते हैं।

इनकैप्सुलेशन = आसान मेंटेनेंस और स्पष्ट ओनरशिप

जब कोई कम्पोनेंट सीमित props (इनपुट) और इवेंट्स/कॉलबैक (आउटपुट) एक्सपोज़ करता है, तो इसके इंटर्नल्स को बदले बिना बाकी ऐप को तोड़ना मुश्किल होता है। टीमें विशिष्ट कम्पोनेंट्स या फ़ोल्डर्स (जैसे “checkout UI”) की देखरेख कर सकती हैं और आत्मविश्वास से सुधार कर सकती हैं।

इनकैप्सुलेशन आकस्मिक कपलिंग को भी घटाती है: कम ग्लोबल सेलेक्टर्स, कम क्रॉस-फाइल साइड-इफेक्ट्स, और कम “क्यों यह क्लिक हैंडलर काम करना बंद कर दिया?” आश्चर्य।

कम्पोनेंट्स का प्रोडक्ट कॉन्सेप्ट से मैप होना

जब कम्पोनेंट्स मुख्य बिल्डिंग ब्लॉक्स बन गए, तो कोड प्रोडक्ट को प्रतिबिंबित करने लगा:

  • Button (primary/secondary, loading, icon)
  • Modal (open/close, focus trap, escape key)
  • CheckoutForm (validation, submission, error states)

यह मैपिंग UI चर्चाओं को आसान बनाती है: डिजाइनर, PM और इंजीनियर एक ही “चेज़” के बारे में बात कर सकते हैं।

फ़ाइल स्ट्रक्चर पर प्रभाव

कम्पोनेंट थिंकिंग ने कई कोडबेस को फीचर- या डोमेन-आधारित संगठन की ओर धकेला (उदा. /checkout/components/CheckoutForm) और साझा UI लाइब्रेरियों की शुरुआत की (अक्सर /ui/Button)। जब फीचर बढ़ते हैं यह स्ट्रक्चर पेज-ओनली फोल्डर्स से बेहतर स्केल करता है और बाद में डिज़ाइन सिस्टम के लिए रास्ता बनाता है।

घोषणात्मक रेंडरिंग और JSX का रोल

React की रेंडरिंग शैली अक्सर घोषणात्मक (declarative) के रूप में वर्णित होती है: आप बताते हैं कि किसी स्थिति के लिए UI कैसा दिखना चाहिए, और React ब्राउज़र को मैच करने का तरीका निकालता है।

“अंतिम परिणाम बताओ, चरणों को नहीं”

पुराने DOM-प्रथम तरीकों में आप आमतौर पर स्टेप-बाय-स्टेप निर्देश लिखते थे: एलिमेंट खोजो → नया नोड बनाओ → टेक्स्ट सेट करो → उसे जोड़ो → बाद में अपडेट/रिमूव करो।

घोषणात्मक रेंडरिंग में आप परिणाम व्यक्त करते हैं: “अगर यूज़र लॉग इन है तो नाम दिखाओ; अगर नहीं है तो साइन-इन बटन दिखाओ।”

यह बदलाव मायने रखता है क्योंकि यह "UI बहीखाता" की मात्रा घटाता है जो आपको रखना पड़ता है। आप लगातार यह ट्रैक नहीं कर रहे कि कौन से एलिमेंट मौजूद हैं—आप उन स्टेट्स पर ध्यान देते हैं जिनमें आपकी ऐप हो सकती है।

JSX ने इसे अपनाने में मदद क्यों की

JSX असल में UI संरचना को उस लॉजिक के पास लिखना आसान बनाता है जो उसे नियंत्रित करता है। अलग टेम्पलेट और लॉजिक फाइलों के बीच कूदने के बजाय आप संबंधित हिस्सों को साथ रख सकते हैं: मार्कअप-जैसी संरचना, शर्तें, छोटे फॉर्मैटिंग फैसले और इवेंट हैंडलर्स।

यह को-लोकेशन एक बड़ा कारण है कि React का कम्पोनेंट मॉडल व्यावहारिक लगा। एक कम्पोनेंट सिर्फ HTML का टुकड़ा नहीं है और न ही सिर्फ JavaScript का—यह UI व्यवहार की यूनिट है।

“क्या यह HTML और JS मिला रहा है?”

एक आम चिंता यह है कि JSX HTML और JavaScript को मिला देता है, जो सुनने में पीछे जाने जैसा लगता है। पर JSX सचमुच HTML नहीं है—यह सिंटैक्स है जो JavaScript कॉल्स बनाता है। और अधिक महत्वपूर्ण बात: React तकनीकों को मिला नहीं रहा जितना कि वह उन चीज़ों को समूहित कर रहा है जो साथ बदलती हैं।

जब लॉजिक और UI संरचना घनिष्ठ रूप से जुड़ी होती है (उदा. “वेलिडेशन फेल होने पर ही एरर दिखाओ”), उन्हें एक जगह पर रखना अलग फाइलों में नियम फैलाने से स्पष्ट हो सकता है।

घोषणात्मक रेंडरिंग केवल JSX तक सीमित नहीं

JSX ने React को सुलभ बनाया, पर मूल अवधारणा JSX से परे भी है। आप React बिना JSX के लिख सकते हैं, और अन्य फ्रेमवर्क भी अलग टेम्पलेट सिंटैक्स के साथ घोषणात्मक रेंडरिंग का उपयोग करते हैं।

टिकाऊ असर यह मनोवृत्ति है: UI को स्टेट का फ़ंक्शन मानो, और फ्रेमवर्क को स्क्रीन को सिंक में रखने की मशीनरी सौंप दो।

रिकन्सिलिएशन और वर्चुअल DOM (मिथकों के बिना)

डर के बिना रिफैक्टर करें
रिफैक्टर्स के साथ प्रयोग करें, फिर स्नैपशॉट और रोलबैक से आसानी से वापस लौटें।
स्नैपशॉट्स इस्तेमाल करें

React से पहले एक आम बग का स्रोत सरल था: डेटा बदल गया, पर UI नहीं बदला। डेवलपर्स नया डेटा फेच करते, फिर मैन्युअली सही DOM नोड्स ढूँढकर टेक्स्ट अपडेट करते, क्लास टॉगल करते, एलिमेंट जोड़ते/हटाते और इसे हर कोने के साथ संगत रखने की कोशिश करते। समय के साथ "अपडेट लॉजिक" अक्सर UI से अधिक जटिल हो जाता था।

React का बड़ा वर्कफ़्लो शिफ्ट यह है कि आप ब्राउज़र को पेज बदलने के निर्देश नहीं देते। आप बताते हैं कि किसी स्टेट के लिए UI कैसा होना चाहिए, और React असली DOM को उससे मिलाने का तरीका निकालता है।

रिकन्सिलिएशन का असली मतलब

रिकन्सिलिएशन वह प्रक्रिया है जिसमें React पहले और अब रेंडर किए हुए आउटपुट की तुलना कर के ब्राउज़र DOM में सबसे छोटे सेट के परिवर्तन लागू करता है।

महत्वपूर्ण बात यह नहीं है कि React "वर्चुअल DOM" को जादुई प्रदर्शन ट्रिक के रूप में उपयोग करता है; महत्वपूर्ण यह है कि React आपको एक पूर्वानुमेय मॉडल देता है:

  • आप रेंडर लॉजिक ऐसे लिखते हैं जैसे आप UI को फिर से बना रहे हों।
  • React क्रमिक रूप से DOM अपडेट करता है ताकि यूज़र को पूर्ण रीबिल्ड का बोझ न उठाना पड़े।

यह पूर्वानुमेयता डेवलपर वर्कफ़्लो में सुधार लाती है: कम मैन्युअल DOM अपडेट्स, कम असंगत स्टेट्स, और ऐप भर में एक ही नियमों के अनुसार UI अपडेट्स।

Keys: व्यावहारिक सबक

जब आप सूचियाँ रेंडर करते हैं, React को "पुराने आइटम" को "नए आइटम" से मिलाने के लिए एक स्थिर तरीका चाहिए—इसी लिए key होता है।

{todos.map(todo => (
  <TodoItem key={todo.id} todo={todo} />
))}

स्थिर और यूनिक key का उपयोग करें (जैसे ID)। जब आइटम reorder/insert/delete हो सकें तब एरे इंडेक्स से बचें—वरना React गलत कम्पोनेंट इंस्टेंस रीयूज़ कर सकता है और अजीब UI व्यवहार (जैसे इनपुट गलत वैल्यू रखना) दिखाई दे सकते हैं।

वन-वे डेटा फ्लो: एक सरल मानसिक मॉडल

React का एक बड़ा आर्किटेक्चरल शिफ्ट यह है कि डेटा एक दिशा में बहता है: पैरेंट से चाइल्ड तक। किसी भी UI हिस्से को बिना स्पष्ट इवेंट के दूसरे हिस्से में जाकर साझा स्टेट म्यूटेट करने की बजाय, React यह प्रोत्साहित करता है कि अपडेट्स स्पष्ट इवेंट्स हों जो ऊपर जाएँ और परिणामस्वरूप डेटा नीचे आए।

एक सरल पैरेंट/चाइल्ड उदाहरण

function Parent() {
  const [count, setCount] = React.useState(0);

  return (
    <Counter
      value={count}
      onIncrement={() => setCount(c => c + 1)}
    />
  );
}

function Counter({ value, onIncrement }) {
  return (
    <button onClick={onIncrement}>
      Clicks: {value}
    </button>
  );
}

ध्यान दें कि Counter सीधे count को बदलता नहीं है। वह value (डेटा) और onIncrement (बदलाव की मांग करने का तरीका) प्राप्त करता है। यही मानसिक मॉडल का मूल है।

स्पष्ट सीमाएँ, कम साइड-इफेक्ट्स

यह पैटर्न सीमाओं को स्पष्ट बनाता है: “यह डेटा किसका है?” आमतौर पर उत्तर होता है “सबसे नज़दीकी आम पैरेंट।” जब कुछ अनपेक्षित रूप से बदलता है, आप उस जगह तक ट्रेस करते हैं जहां स्टेट रखी जा रही है—छिपे हुए म्यूटेशनों के जाल में नहीं।

Props बनाम state एक आयोजन सिद्धांत के रूप में

  • State: कम्पोनेंट का निजी, परिवर्तनीय डेटा (सच्चाई का स्रोत)।
  • Props: बाहर से पास किए गए इनपुट (रिसीवर के दृष्टिकोण से सिर्फ़ पढ़ने वाले)।

यह भेद टीमों को तय करने में मदद करता है कि लॉजिक कहाँ होना चाहिए और आकस्मिक कप्लिंग को रोकता है।

रीयूज़ और टेस्टिंग आसान होते हैं

जो कम्पोनेंट्स props पर निर्भर करते हैं वे रीयूज़ करने में आसान होते हैं क्योंकि वे ग्लोबल वेरिएबल्स या DOM क्वेरीज पर निर्भर नहीं करते। वे टेस्ट करने में भी सरल होते हैं: आप उन्हें विशेष props के साथ रेंडर करके आउटपुट पर असर्शन कर सकते हैं, जबकि स्टेटफुल व्यवहार वहां जहाँ स्टेट मैनेज होता है वहीं टेस्ट किया जाता है।

प्रोजेक्ट्स में composition vs inheritance

बिल्ड लागत कम करें
जो आप बनाते हैं उसे Koder.ai पर शेयर करके या टीममेट्स को रेफर करके क्रेडिट पाएं।
क्रेडिट कमाएँ

React ने टीमों को UI के लिए क्लास हायरेरकियों से दूर और छोटे, फोकस्ड पीसों को जोड़ने की ओर मोड़ा। बेस Button को दस वेरिएशन्स में एक्स्टेंड करने की बजाय आप आमतौर पर कम्पोनेंट्स को मिलाकर व्यवहार और विजुअल्स बनाते हैं।

रोज़मर्रा में composition कैसे दिखता है

एक आम पैटर्न है लेआउट कम्पोनेंट्स बनाना जो यह नहीं जानते कि उनमें किस डेटा को रखा जाएगा:

  • PageShell हेडर/साइडबार/फूटर के लिए
  • Stack/Grid स्पेसिंग और अलाइनमेंट के लिए
  • Card सुसंगत फ्रेमिंग के लिए

ये कम्पोनेंट्स children स्वीकार करते हैं ताकि पेज यह निर्णय ले कि भीतर क्या जाएगा, न कि लेआउट।

आप RequireAuth या ErrorBoundary जैसे हल्के रैपर भी देखेंगे जो उनकी रैप की हुई चीज पर एक चिंता जोड़ते हैं बिना अंदरूनी कम्पोनेंट को बदले।

जब "सिर्फ children" से अधिक नियंत्रण चाहिए, टीमें अक्सर props के जरिए slot-जैसी अप्रोच इस्तेमाल करती हैं:

  • Modal के साथ title, footer, और children
  • Table के साथ renderRow या emptyState

यह कम्पोनेंट्स को लचीला बनाता है बिना API सतह फटने के।

इनहेरीटन क्यों अक्सर नुकसान पहुंचाता है

गहरी इनहेरीटन ट्री अच्छी नीयत से शुरू होती है पर प्रबंधित करना मुश्किल हो जाता है क्योंकि:

  • व्यवहार कई स्तरों में बंट जाता है (“यह स्टाइल कहाँ से आ रहा है?”)
  • बेस क्लास में बदलाव बिना संबंधी स्क्रीन में भी प्रभाव डालता है
  • ओवरराइड्स इकठ्ठा होते जाते हैं और "जनरल" बेस एक ग्रैब-बैग बन जाता है

आधुनिक composition टूल्स: hooks

Hooks ने composition को और व्यावहारिक बना दिया। एक कस्टम हुक जैसे useDebouncedValue या usePermissions कई फीचर कम्पोनेंट्स को लॉजिक शेयर करने देता है बिना UI शेयर किए। इसे साझा UI प्रिमिटिव्स (बटन, इनपुट, टाइपोग्राफी) और फीचर कम्पोनेंट्स (CheckoutSummary, InviteUserForm) के साथ जोड़ें—तब आपको ऐसे रीयूज़ मिलते हैं जो ऐप बढ़ने पर समझने योग्य बने रहते हैं।

स्टेट मैनेजमेंट: लोकल स्टेट से शेयर्ड स्टोर्स तक

React ने स्थानीय कम्पोनेंट स्टेट से शुरू करना सहज बना दिया: एक फॉर्म फील्ड वैल्यू, एक ड्रॉपडाउन खुला है या नहीं, एक लोडिंग स्पिनर। यह अच्छा काम करता है—जब तक ऐप बड़ा न हो जाए और कई हिस्सों को समन्वय की ज़रूरत न पड़े।

स्टेट शेयर करना क्यों मुश्किल हो जाता है

जैसे-जैसे फीचर्स बढ़ते हैं, स्टेट अक्सर उन कम्पोनेंट्स द्वारा पढ़ी/अपडेट की जानी चाहिए जो डायरेक्ट पैरेंट-चाइल्ड रिश्ते में नहीं होते। "बस props पास करो" कई बार लंबी चैन बन जाती है जहाँ मध्य के कम्पोनेंट्स को वह डेटा फ़र्क नहीं पड़ता। इससे रिफैक्टरिंग जोखिम भरी हो जाती है, बोइलरप्लेट बढ़ता है, और दो जगहों पर एक ही स्टेट अलग-अलग दिखने जैसी बग होती है।

टीमें जो सामान्य तरीके अपनाती हैं

  1. स्टेट ऊपर उठाना

नज़दीकी आम पैरेंट में स्टेट ले जाकर उसे props के जरिए नीचे पास करें। यह अक्सर सबसे सरल विकल्प है और निर्भरता स्पष्ट रखता है, पर ज्यादा उपयोग करने पर "गॉड कम्पोनेंट्स" बन सकते हैं।

  1. Context क्रॉस-कटिंग चिंताओं के लिए

React Context तब मदद करता है जब कई कम्पोनेंट्स को वही वैल्यू चाहिए (theme, locale, current user)। यह prop drilling कम करता है, पर बार-बार बदलने वाले डेटा को Context में रखने से अपडेट और परफॉर्मेंस पर असर पड़ सकता है।

  1. बाहरी स्टोर्स

बड़े React ऐप्स के साथ समुदाय ने Redux जैसे पैटर्न पेश किए। ये स्टेट अपडेट्स को केंद्रीकृत करते हैं, अक्सर एक्शन्स और सेलेक्टर्स के साथ परम्पराएँ बनाते हैं, जो स्केल पर पूर्वानुमेयता बढ़ा सकते हैं।

क्या उपयुक्त है—यह कैसे चुनें

डिफ़ॉल्ट रूप से लोकल स्टेट पसंद करें, जब सिबलिंग्स समन्वय चाहें तो स्टेट उठाएँ, क्रॉस-कटिंग चिंताओं के लिए Context का इस्तेमाल करें, और जब कई दूर-दराज़ के कम्पोनेंट्स एक ही डेटा पर निर्भर हों और टीम को स्पष्ट अपडेट नियम चाहिए हों तो बाहरी स्टोर पर विचार करें। "सही" चुनाव ट्रेंड्स से कम और ऐप जटिलता, टीम साइज़ और बदलती मांगों से ज्यादा जुड़ा होता है।

React ने जो टूलिंग और वर्कफ़्लो प्रचलित किए

React ने सिर्फ UI लिखने का नया तरीका नहीं लाया—इसने टीमों को कम्पोनेंट-ड्रिवन वर्कफ़्लो की ओर भी धकेला जहां कोड, स्टाइलिंग और व्यवहार छोटे, टेस्टेबल यूनिट्स के रूप में विकसित होते हैं। इस बदलाव ने फ्रंटेंड प्रोजेक्ट्स के बनानें, मान्य करने, डोक्युमेंट करने और शिप करने के तरीके को प्रभावित किया।

रोज़मर्रा का कम्पोनेंट-ड्रिवन डेवलपमेंट

जब UI कम्पोनेंट्स से बना हो, तो “बॉर्डर से अंदर” काम करना स्वाभाविक हो जाता है: पहले बटन, फिर फॉर्म, फिर पेज। टीमें कम्पोनेंट्स को प्रोडक्ट की तरह ट्रीट करने लगीं—स्पष्ट APIs (props), पूर्वानुमेय स्टेट्स (loading, empty, error), और रीयूज़ेबल स्टाइलिंग नियम।

व्यावहारिक बदलाव: डिजाइनर और डेवलपर एक साझा कम्पोनेंट इन्वेंटरी के साथ मेल कर सकते हैं, अलग-अलग स्टेट्स में व्यवहार आइसोलेट करके रिव्यू कर सकते हैं, और पेज-स्तरीय आश्चर्य कम कर सकते हैं।

सामान्य टूलचैन

React की लोकप्रियता ने एक आधुनिक टूलचैन को मानक बनाना आसान किया:

  • तेज़ लोकल इटरेशन के लिए बंडलर्स और डेव सर्वर (hot reload, code splitting)
  • बड़े कम्पोनेंट कोडबेस को संगठित रखने के लिए linting और formatting
  • Type checking (अक्सर TypeScript) ताकि कम्पोनेंट props और स्टेट गलत प्रयोग से बचें
  • टेस्ट रनर और कम्पोनेंट-केंद्रित टेस्टिंग यूटिलिटीज

चाहे आप वही टूल न चुनें, उम्मीद रहती है कि एक React ऐप में UI रिग्रेशन जल्दी पकड़ने के गार्डरेल हों।

कुछ टीमें "workflow-first" मानसिकता के विस्तार के रूप में vibe-coding प्लेटफ़ॉर्म्स जैसे Koder.ai का उपयोग करती हैं ताकि चैट-ड्रिवन प्लानिंग से React फ्रंटेंड (और उसके आसपास बेकएंड) को स्कैफ़ोल्ड किया जा सके—यह तब उपयोगी है जब आप कम्पोनेंट संरचना, स्टेट ओनरशिप और फीचर सीमाओं को जल्दी सत्यापित करना चाहते हैं बजाय हफ्तों का हाथ से बना प्लम्बिंग खर्च करने के।

"कम्पोनेंट डॉक्स" और आइसोलेटेड प्रीव्यू

React टीमें कम्पोनेंट एक्सप्लोरर का विचार भी लोकप्रिय हुईं: एक समर्पित वातावरण जहाँ आप कम्पोनेंट्स को अलग-अलग स्टेट्स में रेंडर कर सकते हैं, नोट्स जुड़ सकते हैं और उपयोग गाइडलाइन के लिए एक सिंगल सोर्स बना सकते हैं।

यह "Storybook-स्टाइल" सोच सहयोग बदल देती है: आप किसी कम्पोनेंट का व्यवहार पेज में वायर करने से पहले रिव्यू कर सकते हैं और एज केस को जानबूझकर वैलिडेट कर सकते हैं बजाय मैन्युअल QA पर निर्भर रहने के।

यदि आप एक रीयूज़ेबल लाइब्रेरी बना रहे हैं, तो यह डिज़ाइन सिस्टम अप्रोच के साथ स्वाभाविक रूप से जुड़ता है—देखें /blog/design-systems-basics।

वर्कफ़्लो का रिलीज़ पर प्रभाव

कम्पोनेंट-आधारित टूलिंग छोटे पुल रिक्वेस्ट, स्पष्ट विज़ुअल रिव्यू और सुरक्षित रिफैक्टर्स को प्रोत्साहित करती है। समय के साथ टीम्स UI बदलाव तेज़ी से शिप करती हैं क्योंकि वे अच्छी तरह-स्कोप्ड हिस्सों पर इटरेट कर रही होती हैं बजाय जटिल, पेज-व्यापी DOM कोड के।

डिज़ाइन सिस्टम्स और रीयूज़ेबल कम्पोनेंट लाइब्रेरियाँ

वास्तविक बैकएंड जल्दी जोड़ें
अपने React UI को उसी चैट से जनरेट किए गए Go और PostgreSQL बैकएंड के साथ जोड़ें।
बैकएंड जनरेट करें

एक डिज़ाइन सिस्टम व्यावहारिक रूप से दो चीज़ें साथ में काम करना है: पुन:प्रयोगयोग्य UI कम्पोनेंट्स की लाइब्रेरी (बटन, फॉर्म, मॉडलों, नेविगेशन) और मार्गदर्शक जो बताते हैं कि उन्हें कब और कैसे इस्तेमाल करें (स्पेसिंग, टाइपोग्राफी, टोन, एक्सेसिबिलिटी नियम, इंटरेक्शन पैटर्न)।

React ने यह दृष्टिकोण प्राकृतिक बना दिया क्योंकि "कम्पोनेंट" पहले से ही UI की मुख्य यूनिट है। पेजों के बीच मार्कअप कॉपी करने के बजाय टीमें \u003cButton /\u003e, \u003cTextField /\u003e, या \u003cDialog /\u003e एक बार प्रकाशित कर सकती हैं और हर जगह पुन:प्रयोग कर सकती हैं—फिर भी props के जरिए नियंत्रित कस्टमाइज़ेशन की अनुमति दे सकती हैं।

क्यों React UI लाइब्रेरीज़ के अनुकूल है

React कम्पोनेंट्स आत्मनिर्भर होते हैं: वे संरचना, व्यवहार और स्टाइलिंग को स्थिर इंटरफ़ेस के पीछे बाँध सकते हैं। इससे एक ऐसी कम्पोनेंट लाइब्रेरी बनाना सरल हो जाता है जो:

  • दस्तावेजीकृत हो: हर कम्पोनेंट के उदाहरण और उपयोग नोट्स हों
  • वर्ज़न्ड हो: बदलाव धीरे-धीरे रिलीज़ किए जा सकें बिना ऐप को फिर से लिखे
  • कम्पोज़ेबल हो: छोटे टुकड़े बड़े पैटर्न में मिलकर काम करें (उदा. फॉर्म फील्ड + वेलिडेशन + लेआउट)

यदि आप नये सिरे से शुरू कर रहे हैं, तो एक सरल चेकलिस्ट मदद करती है ताकि "कम्पोनेंट्स का ढेर" असंगतता में न बदल जाए: /blog/component-library-checklist।

स्थिरता के फायदे: एक्सेसिबिलिटी, थीमिंग, साझा व्यवहार

डिज़ाइन सिस्टम सिर्फ़ दृश्य समानता नहीं है—यह व्यवहारिक समानता भी है। जब एक मॉडेल हमेशा सही तरीके से फोकस ट्रैप करे, या ड्रॉपडाउन हमेशा कीबोर्ड नेविगेशन सपोर्ट करे, तो एक्सेसिबिलिटी डिफ़ॉल्ट बन जाती है न कि बाद में जोड़ने वाली चीज़।

थीमिंग भी आसान हो जाती है: आप टोकन्स (रंग, स्पेसिंग, टाइपोग्राफी) को केंद्रीकृत कर सकते हैं और कम्पोनेंट्स उन्हें उपयोग कर सकते हैं, ताकि ब्रांड बदलाव हर स्क्रीन को छूने की बजाय केंद्रीय बदलाव से प्रभावी हों।

टीमें अक्सर यह आकलन करती हैं कि साझा कम्पोनेंट्स में निवेश करना किस हद तक उपयोगी है—यह निर्णय स्केल और मेंटेनेंस लागतों से जुड़ा होता है; कुछ संगठन इसका मूल्यांकन प्लेटफ़ॉर्म योजनाओं से जोड़ते हैं जैसे /pricing।

टेस्टींग, परफ़ॉर्मेंस और सामान्य आर्किटेक्चर पिटफॉल्स

React ने सिर्फ़ UI बनाने का तरीका बदला—इसने गुणवत्ता को आकलन करने का तरीका भी बदला। जब आपका ऐप कम्पोनेंट्स से बना हो जिनके स्पष्ट इनपुट (props) और आउटपुट (रेंडर्ड UI) हों, तो टेस्टिंग और परफ़ॉर्मेंस आर्किटेक्चरल निर्णय बन जाते हैं, न कि आख़िरी पल की मरम्मत।

सीमाएँ स्पष्ट होने पर टेस्टिंग सरल होती है

कम्पोनेंट सीमाएँ आपको दो उपयोगी स्तरों पर टेस्ट करने देती हैं:

  • यूनिट टेस्ट्स: एक दिए गए props और स्टेट के सेट के लिए कम्पोनेंट सही रेंडर करता है या नहीं (एज केस सहित)। आप कम्पोनेंट्स को छोटे "UI फ़ंक्शन्स" की तरह मान सकते हैं।
  • इंटीग्रेशन टेस्ट्स: एक छोटी ट्री (एक फॉर्म और उसकी वेलिडेशन मैसेज, एक लिस्ट और उसके फिल्टर्स) रेंडर करके पुष्टि करें कि यूज़र व्यवहार सही UI परिवर्तन पैदा करता है।

यह तब सबसे अच्छा काम करता है जब कम्पोनेंट्स की साफ़ ओनरशिप हो: एक जगह जो स्टेट की देखरेख करे, और बच्चे ज्यादातर डेटा दिखाएँ और इवेंट्स निकालें।

परफ़ॉर्मेंस आर्किटेक्चर है, माइक्रो-ऑप्टिमाइज़ेशन्स नहीं

React ऐप्स अक्सर तेज़ महसूस होते हैं क्योंकि टीमें संरचना में परफ़ॉर्मेंस को शामिल करती हैं:

  • कोड स्प्लिटिंग: केवल वही लोड करें जो किसी रूट या फीचर को चाहिए, ताकि इनिशियल लोड छोटा रहे।
  • मेमोइज़ेशन: तभी अनावश्यक री-रेंडर्स रोकें जब इनपुट नहीं बदले हों (इसे इरादतन इस्तेमाल करें)।
  • लेज़ी लोडिंग: भारी विजेट्स (चार्ट्स, एडिटर) तब तक टाला जाएँ जब तक यूज़र को उनकी जरूरत न पड़े।

एक उपयोगी नियम: महंगे हिस्सों (बड़ी लिस्ट्स, जटिल गणनाएँ, अक्सर री-रेंडर होने वाले क्षेत्र) को अनुकूलित करें बजाय छोटे-छोटे सुधारों के पीछे भागने के।

देखभाल करने लायक पिटफॉल्स

समय के साथ टीमें कुछ सामान्य जालों में फँस सकती हैं: ओवर-कम्पोनेंटाइज़िंग (बहुत छोटे टुकड़े जिनका उद्देश्य अस्पष्ट हो), प्रॉप ड्रिलिंग (कई लेयर्स से डेटा पास करना), और धुंधली सीमाएँ जहाँ किसी को भी नहीं पता कि किस कम्पोनेंट का स्टेट "मालिक" है।

जब आप तेज़ी से आगे बढ़ रहे हों (खासकर ऑटो-जनरेटेड या स्कैफ़ोल्ड कोड के साथ), ये पिटफॉल्स तेज़ी से दिखते हैं: कम्पोनेंट्स बढ़ जाते हैं और ओनरशिप धुंधली हो जाती है। चाहे आप हाथ से कोड कर रहे हों या Koder.ai जैसे टूल से React ऐप और बैकएंड (अक्सर Go + PostgreSQL) जेनरेट करवा रहे हों, गार्डरेल वही है: स्टेट ओनरशिप स्पष्ट रखें, कम्पोनेंट API छोटे रखें, और फ़ीचर की स्पष्ट सीमाओं की ओर रिफैक्टर करें।

आगे क्या है (और क्या टिकेगा)

Server Components, मेटा-फ्रेमवर्क्स, और बेहतर टूलिंग यह बदलते रहेंगे कि React ऐप्स कैसे डिलीवर होंगे। टिकाऊ सबक वही है: स्टेट, ओनरशिप, और कम्पोज़ेबल UI बिल्डिंग ब्लॉक्स के इर्द-गिर्द डिजाइन करें, और फिर टेस्टिंग और परफ़ॉर्मेंस को स्वाभाविक रूप से फ़ॉलो करने दें।

गहरी संरचना निर्णयों के लिए देखें /blog/state-management-react।

अक्सर पूछे जाने वाले प्रश्न

React के संदर्भ में “frontend architecture” का क्या मतलब है?

React ने फ़्रंटेंड आर्किटेक्चर को कुछ मूलभूत निर्णयों के इर्द-गिर्द फिर से परिभाषित किया:

  • UI को पुन:प्रयोगयोग्य कम्पोनेंट्स में विभाजित करना
  • UI को स्टेट-ड्रिवन बनाना (डेटा ही सच्चाई का स्रोत)
  • स्क्रीन बनाने के लिए composition का उपयोग
  • जिम्मेदारी स्पष्ट करने के लिए one-way data flow अपनाना

व्यावहारिक असर: कम मैन्युअल DOM-बहीखाता और टीमों तथा टूलिंग के लिए स्पष्ट सीमाएँ।

एक व्यावहारिक परिभाषा में “component thinking” क्या है?

कम्पोनेंट थिंकिंग का अर्थ है हर UI भाग को एक छोटा, पुन:प्रयोगयोग्य यूनिट मानना जो अपनी रेंडरिंग का मालिक हो और बड़े स्क्रीन में जोड़ा जा सके। व्यवहार में एक कम्पोनेंट साधारणतः:

  • संरचना (क्या रेंडर करता है)
  • इंटरैक्शन (हैंडलर्स, स्टेट, इफ़ेक्ट्स)
  • स्टाइलिंग हुक्स (क्लासेस/वेरिएंट/टोकन)

यह दृष्टिकोण काम को "इस div को अपडेट करो" से बदलकर "इस स्टेट के लिए यह कम्पोनेंट रेंडर करो" कर देता है।

React ने मैन्युअल DOM मैनिपुलेशन की जरूरत क्यों घटाई?

DOM-फर्स्ट कोड में अक्सर DOM ही सच्चाई का स्रोत बन जाता है और कई एलिमेंट्स को सिंक में रखने के लिए मैन्युअल काम करना पड़ता है। React में आप स्टेट बदलते हैं और UI उसी के अनुसार रेंडर होता है—इसलिए लोडिंग स्पिनर, डिसेबल बटन, खाली-राज्य जैसी शर्तें स्वाभाविक रूप से संगत रहती हैं。

एक अच्छा परीक्षण: अगर आप बहुत सारे “एलेमेंट ढूँढो और क्लास टॉगल करो” वाले चरण लिख रहे हैं, तो आप मॉडल से लड़ रहे हैं; UI के ग़लत होने पर अक्सर यह स्टेट ओनरशिप का मुद्दा होता है।

React से पहले, DOM-फर्स्ट आर्किटेक्चर के सबसे बड़े दर्द बिंदु क्या थे?

React आने से पहले कई ऐप्स पेज-सेंट्रिक थे: सर्वर-रेंडर किए टेम्पलेट्स, ऊपर jQuery और प्लगइन्स। व्यवहार सर्वर व्यूज़, HTML एट्रिब्यूट्स और JS इनिशियलाइज़र्स में बंटा रहता था।

सामान्य समस्याएँ:

  • टेम्पलेट्स/पेजों में UI की नकल
  • मार्कअप बदलते ही टूटने वाले नाजुक सेलेक्टर्स
  • UI स्टेट असंगत रहना (स्पिनर/एरर/बटन सिंक से बाहर)

React ने टीमों को पुन:प्रयोगयोग्य कम्पोनेंट्स और पूर्वानुमेय अपडेट की तरफ धकेला।

“Declarative rendering” का क्या मतलब है और यह क्यों मायने रखता है?

घोषणात्मक (declarative) रेंडरिंग का मतलब है किसी दिए गए स्टेट के लिए UI को क्या दिखना चाहिए, यह बताना—न कि DOM को कैसे बदलना है।

बदले में आपको मैन्युअल नोड-क्रिएशन/अपेंड/रिमूव जैसी स्टेप-बाय-स्टेप हुक्मों से निपटना नहीं पड़ता; आप रेंडर आउटपुट में शर्तें व्यक्त करते हैं (उदा. “अगर लॉग इन है तो नाम दिखाओ, वरना ‘Sign in’ बटन दिखाओ”), और React असली DOM को मैच कर देता है।

क्यों JSX ने React के मॉडल को लोकप्रिय होने में मदद की?

JSX ने UI संरचना को उसे नियंत्रित करने वाले लॉजिक के नज़दीक लिखना आसान कर दिया—शर्तें, फॉर्मैटिंग और हैंडलर्स के साथ। यह अलग टेम्पलेट और लॉजिक फाइलों के बीच जंप करने की ज़रूरत घटाता है।

JSX असल में HTML नहीं है; यह JavaScript कॉल्स बनाता है। मुख्य लाभ संगठनात्मक है: एक ही जगह पर उन चीज़ों को रखना जो साथ बदलती हैं (UI + व्यवहार)।

React reconciliation क्या है, और `key` का असल मतलब क्या है?

रिकन्सिलिएशन वह प्रक्रिया है जिसमें React पिछली रेंडर और नई रेंडर की तुलना कर के ब्राउज़र DOM पर न्यूनतम परिवर्तन लागू करता है।

प्रैक्टिकल पॉइंट: आप रेंडर लॉजिक ऐसे लिखते हैं जैसे आप UI को फिर से बना रहे हों और React जरूरत के मुताबिक इन्क्रीमेंटल अपडेट कर देता है।

लिस्ट्स के लिए key का उपयोग इसलिए जरूरी है ताकि React पुराने आइटम्स को नए आइटम्स से सही तरह मिलान कर सके। स्थिर और यूनिक key (जैसे ID) का प्रयोग करें—ऐरे इंडेक्स तब बचें जब आइटम reorder/insert/delete हो सकें, वरना गलत कम्पोनेंट इंस्टेंस रीयूज़ हो सकती है।

वन-वे डेटा फ्लो React ऐप आर्किटेक्चर को कैसे सरल बनाता है?

वन-वे डेटा फ्लो का मतलब है कि डेटा पैरेंट से चाइल्ड को props के जरिए जाता है, जबकि चाइल्ड बदलाव की मांग callback के जरिए ऊपर भेजता है।

यह सीमाएँ स्पष्ट करता है:

  • स्टेट मालिक कंपोनेंट में रहता है (source of truth)
  • प्रॉप्स रिसीवर के लिए पढ़ने योग्य इनपुट हैं

डिबगिंग अक्सर "स्टेट कहाँ है" ढूँढने तक सीमित हो जाती है, बजाय अज्ञात म्यूटेशनों के जाल के।

वास्तविक React प्रोजेक्ट्स में “composition over inheritance” कैसा दिखता है?

Composition का मतलब है छोटे, फोकस्ड हिस्सों को मिलाकर स्क्रीन बनाना, न कि क्लास-हाइरार्की के जरिए विस्तार करना।

दैनिक पैटर्न:

  • children स्वीकार करने वाले लेआउट कम्पोनेंट्स (PageShell, Stack, Grid)
  • wrappers जैसे RequireAuth, ErrorBoundary
  • जब children काफी नहीं होते तो slot-जैसे props (title, footer, emptyState)

यह गहरी इनहेरीटन ट्रीज़ और बेस-klasse के अनचाहे प्रभावों से बचाता है।

एक React ऐप बढ़ने पर टीमों को स्टेट मैनेजमेंट के साथ कैसे आगे बढ़ना चाहिए?

विकास के साथ स्टेट शेयर करना जटिल हो सकता है। व्यावहारिक क्रम अक्सर ऐसा होता है:

  1. स्थानीय स्टेट (कंपोनेंट-विशिष्ट)
  2. जब सिबलिंग्स को समन्वय करना हो तो स्टेट "ऊपर उठाओ" (lifting)
  3. cross-cutting चिंताओं के लिए Context (theme, locale, user)
  4. जब कई दूरस्थ कंपोनेंट्स एक ही डेटा पर निर्भर हों और कड़े अपडेट नियम चाहिए हों तो बाहरी स्टोर (Redux जैसे)

फ़ैसला ऐप की जटिलता, टीम साइज और बदलने वाली ज़रूरतों पर निर्भर होना चाहिए—फ़ैशन्स पर नहीं।

विषय-सूची
React के आने से क्या बदलाReact से पहले: पेज-केंद्रित UI और DOM-प्रथम कोडबड़ा विचार: UI = स्टेट का फ़ंक्शनकम्पोनेंट्स: नए बिल्डिंग ब्लॉक्सघोषणात्मक रेंडरिंग और JSX का रोलरिकन्सिलिएशन और वर्चुअल DOM (मिथकों के बिना)वन-वे डेटा फ्लो: एक सरल मानसिक मॉडलप्रोजेक्ट्स में composition vs inheritanceस्टेट मैनेजमेंट: लोकल स्टेट से शेयर्ड स्टोर्स तकReact ने जो टूलिंग और वर्कफ़्लो प्रचलित किएडिज़ाइन सिस्टम्स और रीयूज़ेबल कम्पोनेंट लाइब्रेरियाँटेस्टींग, परफ़ॉर्मेंस और सामान्य आर्किटेक्चर पिटफॉल्सअक्सर पूछे जाने वाले प्रश्न
शेयर करें