<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: banti kevat</title>
    <description>The latest articles on DEV Community by banti kevat (@banti_kevat_8e2d123bb7994).</description>
    <link>https://dev.to/banti_kevat_8e2d123bb7994</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3454157%2F420ab013-a400-45a0-bb7a-65cb62b35121.gif</url>
      <title>DEV Community: banti kevat</title>
      <link>https://dev.to/banti_kevat_8e2d123bb7994</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/banti_kevat_8e2d123bb7994"/>
    <language>en</language>
    <item>
      <title>React Router me Link aur NavLink Kaise Use Karein</title>
      <dc:creator>banti kevat</dc:creator>
      <pubDate>Sat, 18 Jul 2026 05:49:35 +0000</pubDate>
      <link>https://dev.to/banti_kevat_8e2d123bb7994/react-router-me-link-aur-navlink-kaise-use-karein-5340</link>
      <guid>https://dev.to/banti_kevat_8e2d123bb7994/react-router-me-link-aur-navlink-kaise-use-karein-5340</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvq2nnxi1xwx7xpw88rzg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvq2nnxi1xwx7xpw88rzg.png" alt="React Router me Link aur NavLink Kaise Use Karein (in Hindi)" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
React Router me Link aur NavLink kaise use karein? Is Hindi guide me navigation, active styling aur single page app routing ko detail me seekhein.&lt;/p&gt;

&lt;p&gt;क्या आप भी React App बनाते समय Navigation के लिए traditional HTML anchor tags यानी &lt;code&gt;\&lt;/code&gt; का use कर रहे हैं और हर click पर आपका browser full reload हो रहा है? दोस्तों, Single Page Application (SPA) का असली मज़ा तब तक नहीं आता जब तक pages बिना reload हुए पलक झपकते ही न बदलें! आज हम इसी समस्या को हमेशा के लिए खत्म करेंगे।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Quick Answer:&lt;/strong&gt; React App में बिना page reload किए smooth client-side navigation के लिए React Router के &lt;code&gt;Link&lt;/code&gt; और &lt;code&gt;NavLink&lt;/code&gt; Components का use किया जाता है। &lt;code&gt;Link&lt;/code&gt; normal navigation के लिए use होता है, जबकि &lt;code&gt;NavLink&lt;/code&gt; का use active page link को CSS class या inline style देकर visually highlight करने के लिए किया जाता है।&lt;/p&gt;

&lt;p&gt;इस comprehensive tutorial में हम गहराई से समझेंगे कि &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;ReactJS&lt;/a&gt; में internal links को smooth बनाने के लिए &lt;code&gt;Link\&lt;/code&gt; और &lt;code&gt;NavLink\&lt;/code&gt; का सही उपयोग कैसे किया जाता है, इन दोनों के बीच का अंतर क्या है, और industry-level best practices क्या हैं।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  React Router में traditional HTML Anchor Tag (&amp;lt;a&amp;gt;) का use क्यों नहीं करना चाहिए?
&lt;/h2&gt;

&lt;p&gt;जब हम HTML में standard navigation करते हैं, तो हम &lt;code&gt;[\&lt;/code&gt; का use करते हैं। लेकिन React component के अंदर anchor tag का use करना एक बहुत बड़ी भूल हो सकती है। चलिए समझते हैं ऐसा क्यों है:&lt;/p&gt;

&lt;p&gt;जब भी user किसी anchor tag पर click करता है, तो browser default behavior के तहत dynamic request server पर भेजता है। इसके बाद server से पूरा का पूरा HTML document, CSS, और JavaScript files फिर से load होती हैं। &lt;/p&gt;

&lt;p&gt;इस structure को समझने के लिए नीचे दिए गए flow diagram को देखिए:&lt;/p&gt;

&lt;p&gt;🏗️ Navigation comparison Flow&lt;/p&gt;

&lt;p&gt;Anchor Tag (&amp;lt;a&amp;gt;)&lt;br&gt;
→&lt;br&gt;
Full Page Reload&lt;br&gt;
→&lt;br&gt;
State Lost ❌&lt;/p&gt;

&lt;p&gt;Router &amp;lt;Link&amp;gt;&lt;br&gt;
→&lt;br&gt;
Client-Side Routing&lt;br&gt;
→&lt;br&gt;
State Preserved ✅&lt;/p&gt;

&lt;p&gt;Diagram: Comparison of Standard Navigation vs Client-Side Navigation in React&lt;/p&gt;
&lt;h3&gt;
  
  
  Anchor Tag के नुकसान:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;State Loss:&lt;/strong&gt; अगर आपने Redux, React Context API, या local React component state में कोई data store करके रखा है, तो anchor tag के reload होते ही वह सारा dynamic data हवा में गायब हो जाएगा।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slow User Experience:&lt;/strong&gt; User को बार-बार loading screen देखनी पड़ेगी, जो modern user experience के नियमों के खिलाफ है।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server Load:&lt;/strong&gt; बार-बार एक ही assets के लिए server को request भेजने से application performance पर भी असर पड़ता है।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;यहीं पर काम आता है **React Router** का magical routing structure, जो &lt;code&gt;e.preventDefault()\&lt;/code&gt; का behind-the-scenes use करके browser reload को रोकता है और URL के हिसाब से components को dynamically switch कर देता है।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  React Router Navigation Setup करने का Step-by-Step तरीका क्या है?
&lt;/h2&gt;

&lt;p&gt;दोस्तों, चलिए एकदम scratch से setup करते हैं ताकि आपको zero configuration errors आएं। हम React Router v6 का use करेंगे जो अभी current standard है।&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1: Install React Router DOM
&lt;/h3&gt;

&lt;p&gt;सबसे पहले अपने project directory में terminal खोलिए और React Router library को install कर लीजिए:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install react-router-dom
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Wrap Application inside BrowserRouter
&lt;/h3&gt;

&lt;p&gt;अब अपने application की wrapper file (आमतौर पर &lt;code&gt;main.jsx\&lt;/code&gt; या &lt;code&gt;index.js\&lt;/code&gt;) में &lt;code&gt;BrowserRouter\&lt;/code&gt; को wrap करना होगा। इसके बिना dynamic links काम नहीं करेंगे।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App.jsx';
import './index.css';
import { BrowserRouter } from 'react-router-dom';

ReactDOM.createRoot(document.getElementById('root')).render(





);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Define Routes in App.jsx
&lt;/h3&gt;

&lt;p&gt;अब &lt;code&gt;App.jsx\&lt;/code&gt; में जाकर अपने routes set कर लेते हैं। हम Home, About, और Contact pages बनाएंगे।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Routes, Route } from 'react-router-dom';
import Home from './pages/Home';
import About from './pages/About';
import Contact from './pages/Contact';
import Navbar from './components/Navbar';

function App() {
  return (










  );
}

export default App;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;lt;Link&amp;gt; Component क्या है और इसे कैसे use करें?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Link\&lt;/code&gt; component React Router का basic block है। इसका use user-triggered state navigation के लिए किया जाता है। React Router behind the scenes इस &lt;code&gt;Link\&lt;/code&gt; को standard &lt;code&gt;[\&lt;/code&gt; anchor tag में ही convert करता है, लेकिन इसके default navigation payload को modify कर देता है ताकि page refresh न हो।&lt;/p&gt;

&lt;h3&gt;
  
  
  Link Component का basic syntax:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Link } from 'react-router-dom';

// Component के अंदर इस तरह use करें:
&amp;lt;Link to="/about"&amp;gt;About Us&amp;lt;/Link&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;यहां &lt;code&gt;to\&lt;/code&gt; attribute anchor tag के &lt;code&gt;href\&lt;/code&gt; attribute की तरह काम करता है। इसमें आप target URL reference define करते हैं।&lt;/p&gt;

&lt;h3&gt;
  
  
  Link के Advanced Attributes (Props):
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;to (String or Object):&lt;/strong&gt; यह destination specify करता है। आप इसमें string के अलावा configuration object भी pass कर सकते हैं:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Link to={{ pathname: "/about", search: "?tab=details" }}&amp;gt;About&amp;lt;/Link&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;replace (Boolean):&lt;/strong&gt; अगर आप Browser History stack में current page को replace करना चाहते हैं, तो इसका use करें। इसे true करने पर, back click करने पर user previous path पर वापस नहीं जा पाएगा:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Link to="/dashboard" replace&amp;gt;Go to Dashboard&amp;lt;/Link&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;state (Any):&lt;/strong&gt; यह feature सोने पर सुहागा है! इसकी मदद से आप बिना URL query params change किए location object में secure components dynamic raw state data pass कर सकते हैं:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Link to="/contact" state={{ fromHomepage: true }}&amp;gt;Contact&amp;lt;/Link&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;lt;NavLink&amp;gt; Component क्या है और यह &amp;lt;Link&amp;gt; से कैसे अलग है?
&lt;/h2&gt;

&lt;p&gt;अब बात करते हैं बड़े भाई यानी &lt;code&gt;NavLink\&lt;/code&gt; की। दोस्तों, सोचिए आप एक navigation menu बना रहे हैं। जब user "About" page पर हो, तो navigation header में "About" link active, highlighted या underlined दिखना चाहिए ताकि user को पता रहे कि वह अभी website के किस section में है।&lt;/p&gt;

&lt;p&gt;यही काम करने के लिए &lt;code&gt;NavLink\&lt;/code&gt; का creation हुआ है। यह built-in features के साथ आता है जो check करता है कि browser का active URL component के target dynamic endpoint &lt;code&gt;to\&lt;/code&gt; से match हो रहा है या नहीं।&lt;/p&gt;

&lt;h3&gt;
  
  
  NavLink का default dynamic behavior:
&lt;/h3&gt;

&lt;p&gt;जब browser URL और &lt;code&gt;NavLink\&lt;/code&gt; का &lt;code&gt;to\&lt;/code&gt; match करता है, तो &lt;code&gt;NavLink\&lt;/code&gt; component HTML output में automatically &lt;code&gt;active\&lt;/code&gt; class inject कर देता है।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Browser default output dynamically when on /about:
&amp;lt;a href="/about" class="active"&amp;gt;About&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Dynamic Styling apply करने के तरीके:
&lt;/h3&gt;

&lt;p&gt;आप &lt;code&gt;NavLink\&lt;/code&gt; में &lt;code&gt;className\&lt;/code&gt; या &lt;code&gt;style\&lt;/code&gt; dynamic arguments dynamic render features (functions) के ज़रिए styling control कर सकते हैं।&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Custom dynamic class handle करना:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { NavLink } from 'react-router-dom';

function Navigation() {
  return (
    &amp;lt;NavLink 
      to="/about" 
      className={({ isActive }) =&amp;gt; isActive ? 'my-custom-active-class' : 'normal-class'}
    &amp;gt;
      About
    &amp;lt;/NavLink&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  2. Dynamic inline styles handle करना:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;NavLink 
  to="/contact" 
  style={({ isActive }) =&amp;gt; ({
    color: isActive ? '#06b6d4' : '#64748b',
    fontWeight: isActive ? 'bold' : 'normal'
  })}
&amp;gt;
  Contact
&amp;lt;/NavLink&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  3. end prop का use (Very Important!):
&lt;/h4&gt;

&lt;p&gt;ध्यान देने वाली बात ये है कि अगर आपका home link &lt;code&gt;/\&lt;/code&gt; है, तो वह हर path (जैसे &lt;code&gt;/about\&lt;/code&gt;, &lt;code&gt;/contact\&lt;/code&gt;) के साथ match हो जाएगा, क्योंकि &lt;code&gt;/\&lt;/code&gt; सभी routes के base structure में मौजूद होता है। इससे Home link हमेशा active दिखाई देगा! &lt;/p&gt;

&lt;p&gt;इसे रोकने के लिए हमें &lt;code&gt;end\&lt;/code&gt; prop का use करना होता है:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;NavLink to="/" end className={({ isActive }) =&amp;gt; isActive ? "active" : ""}&amp;gt;
  Home
&amp;lt;/NavLink&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;end\&lt;/code&gt; prop यह ensure करता है कि default check process exact browser endpoints को strict match करे।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;lt;Link&amp;gt; vs &amp;lt;NavLink&amp;gt; में क्या अंतर है? (Comparison Table)
&lt;/h2&gt;

&lt;p&gt;दोनों Components के behaviors को deep contrast में समझने के लिए, आइए इस performance properties comparison check table को देखते हैं:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Features / Properties&lt;/th&gt;
&lt;th&gt;&amp;lt;Link&amp;gt; Component&lt;/th&gt;
&lt;th&gt;&amp;lt;NavLink&amp;gt; Component&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Primary Purpose&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;General element page jumps या simple navigation hyperlinks.&lt;/td&gt;
&lt;td&gt;Navigation menu bars, sidebars, links highlights toggles.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Active Class Insertion&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No (कोई automated style check injection नहीं होता)&lt;/td&gt;
&lt;td&gt;Yes (Automatically injects &lt;code&gt;active&lt;/code&gt; class name matches)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dynamic Props Functionality&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;className attributes accept standard statically declared string.&lt;/td&gt;
&lt;td&gt;Supports standard strings and JavaScript arrow functions &lt;code&gt;({ isActive }) =&amp;gt; ...&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Performance Metric&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Slightly faster runtime comparison (no URL processing check overhead)&lt;/td&gt;
&lt;td&gt;Marginal dynamic string comparisons internally process regular routing.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Match Restriction Prop&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Not Applicable&lt;/td&gt;
&lt;td&gt;Supports &lt;code&gt;end&lt;/code&gt; prop behavior for absolute matching resolution.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;इस comparison से साफ़ है कि अगर आपको sidebar, header navbar menu build करना है तो &lt;code&gt;NavLink\&lt;/code&gt; ही सर्वश्रेष्ठ option है। और general internal anchors, card-clicks list elements redirection या text hyperlinking के लिए &lt;code&gt;Link\&lt;/code&gt; component का usage optimal है।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  Complete Implementation Code (Production-Ready)
&lt;/h2&gt;

&lt;p&gt;चलिए दोस्तों, अब सब कुछ मिलाकर एक functional working Navbar, CSS files और components structure code setup complete write-up देखते हैं ताकि आप इसे direct use कर सकें।&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Navbar.jsx Component
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { NavLink } from 'react-router-dom';
import './Navbar.css';

export default function Navbar() {
  return (
    &amp;lt;nav className="main-navbar"&amp;gt;
      &amp;lt;div className="nav-logo"&amp;gt;
        &amp;lt;h2&amp;gt;DevPortal&amp;lt;/h2&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;ul className="nav-links"&amp;gt;
        &amp;lt;li&amp;gt;
          &amp;lt;NavLink 
            to="/" 
            end 
            className={({ isActive }) =&amp;gt; isActive ? "nav-item active-link" : "nav-item"}
          &amp;gt;
            Home
          &amp;lt;/NavLink&amp;gt;
        &amp;lt;/li&amp;gt;
        &amp;lt;li&amp;gt;
          &amp;lt;NavLink 
            to="/about" 
            className={({ isActive }) =&amp;gt; isActive ? "nav-item active-link" : "nav-item"}
          &amp;gt;
            About
          &amp;lt;/NavLink&amp;gt;
        &amp;lt;/li&amp;gt;
        &amp;lt;li&amp;gt;
          &amp;lt;NavLink 
            to="/contact" 
            className={({ isActive }) =&amp;gt; isActive ? "nav-item active-link" : "nav-item"}
          &amp;gt;
            Contact
          &amp;lt;/NavLink&amp;gt;
        &amp;lt;/li&amp;gt;
      &amp;lt;/ul&amp;gt;
    &amp;lt;/nav&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Navbar.css Stylesheet
&lt;/h3&gt;

&lt;p&gt;इस CSS code को create कर अपने layout files path reference mappings से bind करें:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.main-navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background-color: #0f172a;
  padding: 15px 30px;
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}

.nav-logo h2 {
  color: #06b6d4;
  margin: 0;
  font-family: sans-serif;
}

.nav-links {
  list-style: none;
  display: flex;
  gap: 20px;
  margin: 0;
  padding: 0;
}

.nav-item {
  color: #94a3b8;
  text-decoration: none;
  font-size: 16px;
  font-weight: 500;
  padding: 8px 16px;
  border-radius: 6px;
  transition: all 0.3s ease;
}

.nav-item:hover {
  color: #f8fafc;
  background-color: #1e293b;
}

/* Active Class Dynamic Styles styling injected by NavLink */
.active-link {
  color: #ffffff !important;
  background-color: #06b6d4;
  box-shadow: 0 4px 10px rgba(6, 182, 212, 0.3);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;इस component architecture के flow parameters checks dynamic changes verify करने के लिए React App run करें (&lt;code&gt;npm run dev\&lt;/code&gt;)। आप देखेंगे कि route transitions instantaneous हैं, browser refresh wheel move नहीं करता, और static/active dynamic changes instantly style render attributes update process accurate display कर रहे हैं।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Routing Errors और उन्हें कैसे Fix करें?
&lt;/h2&gt;

&lt;p&gt;जब developers React Router config build-out करते हैं, तो कुछ errors standard benchmarks में बार-बार आते हैं। चलिए देख लेते हैं कि उन्हें conceptual resolution mechanism से कैसे &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;fix error&lt;/a&gt; stack handle करेंगे।&lt;/p&gt;

&lt;h3&gt;
  
  
  1. "useHref() may be used only in the context of a &amp;lt;Router&amp;gt; component"
&lt;/h3&gt;

&lt;p&gt;यह common runtime &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;error&lt;/a&gt; तब आता है जब आप &lt;code&gt;Link\&lt;/code&gt; या &lt;code&gt;NavLink\&lt;/code&gt; component का use &lt;code&gt;BrowserRouter\&lt;/code&gt; components dynamic wrapper contextual boundaries के बाहर कर देते हैं।&lt;/p&gt;

&lt;p&gt;* &lt;strong&gt;Solution:&lt;/strong&gt; Check करें कि क्या आपकी layout navigation files root files nested references (&lt;code&gt;App.jsx\&lt;/code&gt; setup) dynamic initialization sequence &lt;code&gt;BrowserRouter\&lt;/code&gt; के wrapper child tree hierarchy boundary limits के dynamic block elements bounds inside structure loop contain कर रही है। &lt;code&gt;BrowserRouter\&lt;/code&gt; को हमेशा highest setup levels level (&lt;code&gt;main.jsx\&lt;/code&gt;) पर configuration declare करें।&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Dynamic state updates missing components payload values
&lt;/h3&gt;

&lt;p&gt;यदि navigation routes context values empty display process parameters data flow parameters errors catch correct attributes pass verify fail block return instances reflect runtime loops check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Send details correctly object
&amp;lt;Link to="/profile" state={{ role: "admin", id: 2050 }}&amp;gt;Profile&amp;lt;/Link&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Target routes dynamic file components load structures references variables state context fetch with &lt;code&gt;useLocation\&lt;/code&gt; react hook correctly sequence fetch verify template syntax check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { useLocation } from 'react-router-dom';

const Profile = () =&amp;gt; {
  const location = useLocation();
  const dataReceived = location.state; // dynamically fetches: { role: "admin", id: 2050 }
  return &amp;lt;div&amp;gt;Role: {dataReceived?.role}&amp;lt;/div&amp;gt;;
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  React Router Performance Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Code Splitting:&lt;/strong&gt; Large component files bundles scale optimizations performance load decrease route components dynamic splits with lazy loads apply structures. Use &lt;code&gt;React.lazy()\&lt;/code&gt; configuration dynamically:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { lazy, Suspense } from 'react';
const Home = lazy(() =&amp;gt; import('./pages/Home'));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prefetching:&lt;/strong&gt; Users card item view transition triggers dynamic trigger events updates can mouse hover layouts preload optimization techniques trigger updates handles can boost web loading speeds!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Relative Paths:&lt;/strong&gt; Deep-nested sub-directory component structures require flexible matching dynamically. Use relative paths to write flexible navigation components. Official document guide specs rules patterns can be detailed from &lt;a href="https://reactrouter.com/" rel="noopener noreferrer"&gt;React Router Documentation&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;p&gt;तो दोस्तों, आज हमने सीखा कि dynamic context systems के inner mechanisms architecture configuration checks elements parameters values mapping dynamic React configurations structures navigation elements setup workflow details step-by-step guidelines process layout templates flow controls parameters properties updates easily कैसे complete parameters resolve structure handle कर सकते हैं!&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Link\&lt;/code&gt; component dynamic routing setups performance render fast dynamic structures parameters handles perfectly standard page transitions components setups structures templates. वही active states toggles logic side layouts highlight handles menu setup configurations design features default properties provide high class performance.&lt;/p&gt;

&lt;p&gt;इन principles templates examples rules setup definitions structure elements codes patterns parameters values integration standard benchmarks scale optimize structure setups codes complete copy test features integrations build! Happy hacking, दोस्तों!&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently Asked Questions (FAQs)
&lt;/h3&gt;

&lt;p&gt;Q1: Link और NavLink में सबसे मुख्य अंतर क्या है?&lt;br&gt;
Link का use general routes redirection hyperlinks text navigation loops references set dynamically create करने के लिए किया जाता है। इसके विपरीत, NavLink component current screen matching active states verify automatically class inject configuration supports options handle करता है, जो menu active link highlights setups configurations build render support parameters dynamic controls rules apply features structure complete templates use values build structures patterns control components setup logic features dynamically templates provides interfaces.&lt;br&gt;
Q2: NavLink में exact या end prop का dynamic function checks relevance क्या है?&lt;br&gt;
base layout route structure paths '/' values always common dynamic components URL validations nested match sequence handles correct outputs templates patterns validation criteria fail control instances check loop process default structures automatically matches dynamic trigger systems templates configurations errors fix setup block elements render features. end parameters limits active class updates patterns criteria strictly root checks define properties structure handles constraints templates models context values active display checks properties rules setups configuration design updates properties features parameters dynamically rules match limits accurate layout blocks context parameters.&lt;br&gt;
Q3: dynamic routing links structure handle elements dynamically parameter components values send state pass patterns correct formats details methods setup updates check rules structures parameters checks triggers options parameters?&lt;br&gt;
Yes. React Router provides absolute security configurations properties controls handles easily options values patterns directly setup variables parameters context state to objects state attributes format values properties. link tag component to standard string variables dynamically variables formats direct mapping inputs state property elements object structure send patterns handle structures template.&lt;br&gt;
Q4: HTML links standard anchor tags context load models inside context errors triggers routing checks handles issues parameters definitions standard system designs?&lt;br&gt;
useHref errors patterns triggers dynamic elements links setup outer component wraps check boundary constraints. browser initialization contexts configurations always browser-router context limits check validation controls rules parameters setup boundary parameters dynamic levels elements loops patterns correctly define setup loops errors triggers definitions resolves options handles elements structure parameters properly.&lt;br&gt;
Q5: custom attributes values configuration styling controls parameters custom arrow functions components structure templates rules matches check dynamic elements parameters logic dynamically setups options defines updates?&lt;br&gt;
Yes. classes definitions supports custom functions triggers active flag checks configurations custom arrow functions attributes dynamic structures elements definitions parameter values returns. matching setups checks boolean conditions options updates classes values render strings layout components templates interfaces correctly formats properties definitions values parameters checks design dynamic updates structures control values profiles perfectly.](...)](/about)&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>React Router Kya Hai aur Kaise Setup Karein</title>
      <dc:creator>banti kevat</dc:creator>
      <pubDate>Fri, 17 Jul 2026 12:44:50 +0000</pubDate>
      <link>https://dev.to/banti_kevat_8e2d123bb7994/react-router-kya-hai-aur-kaise-setup-karein-2ken</link>
      <guid>https://dev.to/banti_kevat_8e2d123bb7994/react-router-kya-hai-aur-kaise-setup-karein-2ken</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fczb01jire3z7xljequd0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fczb01jire3z7xljequd0.png" alt="React Router Kya Hai aur Kaise Setup Karein (in Hindi)" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
React Router kya hai aur kaise setup karein? Is Hindi step-by-step guide me single-page routing, dynamic routes aur hooks ko basic se advanced seekhein.&lt;/p&gt;

&lt;p&gt;दोस्तों, सोचिए कि आप एक बहुत ही शानदार Web Application बना रहे हैं। आपने &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;ReactJS&lt;/a&gt; का use करके सुंदर-सुंदर UI Screens भी बना ली हैं। लेकिन जैसे ही आप "About Us" या "Contact" page पर जाने के लिए किसी button पर click करते हैं, तो क्या होता है? आपका पूरा browser refresh हो जाता है! अगर ऐसा हो रहा है, तो आपका application एक Single Page Application (SPA) नहीं रह जाता, बल्कि वो traditional multi-page website की तरह react करने लगता है।&lt;/p&gt;

&lt;p&gt;एक असली Web Application में user experience एकदम smooth, dynamic और super-fast होना चाहिए, जहाँ बिना browser refresh किए instantaneous page transition हो। इसी Problem को solve करने के लिए हमारी React Ecosystem की सबसे popular library जन्म लेती है, जिसे हम &lt;strong&gt;React Router&lt;/strong&gt; कहते हैं। चलिए, आज चाय की चुस्की के साथ बिल्कुल आसान शब्दों में समझते हैं कि React Router का setup और implementation एक professional structure में कैसे किया जाता है।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Quick Answer:&lt;/strong&gt; React Router एक standard library है जो ReactJS applications में dynamic client-side routing को handle करती है। बिना full page reload किए seamless dynamic transitions और multiple URL navigation options enable करने के लिए React Router का use किया जाता है।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  React Router क्या है और इसका Use क्यों किया जाता है?
&lt;/h2&gt;

&lt;p&gt;React Router एक standard, light-weight library है जो React applications में routing और navigation को manage करती है। Traditional websites में जब हम किसी link पर click करते हैं, तो browser server को एक fresh HTML document के लिए Request भेजता है। Server नया page भेजता है, और पूरा page reload होता है।&lt;/p&gt;

&lt;p&gt;लेकिन React application एक single index.html file पर load होता है। यहाँ React Router browser के address bar के URL को track करता है और बिना page reload किए JavaScript की मदद से screen पर dynamic &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;React components&lt;/a&gt; को switch (swap) कर देता है। इसे हम &lt;strong&gt;Client-side Routing&lt;/strong&gt; कहते हैं।&lt;/p&gt;

&lt;p&gt;React Router का use करने के मुख्य कारण:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No Page Reloads:&lt;/strong&gt; Navigation instant और super smooth हो जाता है।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State Preservation:&lt;/strong&gt; Page change होने पर भी application की global state refresh होकर reset नहीं होती।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Nested Routing:&lt;/strong&gt; Layouts के अंदर layouts (sub-pages) render करना बच्चों का खेल बन जाता है।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO-Friendly URL Patterns:&lt;/strong&gt; Custom paths जैसे &lt;code&gt;/products/:id&lt;/code&gt; बनाना बेहद आसान हो जाता है।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🏗️ Client-Side Routing Flow&lt;/p&gt;

&lt;p&gt;URL Changes (/about)&lt;br&gt;
→&lt;br&gt;
React Router Intercepts&lt;br&gt;
→&lt;br&gt;
Swap Component (No Reload)&lt;/p&gt;

&lt;p&gt;Diagram: React Router tracks URL changes and swaps components instantly without refreshing the browser.&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  React Router v5 vs React Router v6 में क्या अंतर है?
&lt;/h2&gt;

&lt;p&gt;अगर आप पुराने articles या tutorials पढ़ेंगे, तो वहाँ पुराने React Router v5 का syntax मिलेगा। लेकिन आज के समय में production-level apps में &lt;strong&gt;React Router v6&lt;/strong&gt; का ही use किया जाता है, जो काफी light-weight है और modern hooks के साथ fully optimized है।&lt;/p&gt;

&lt;p&gt;इन दोनों versions के बड़े differences को इस table से समझते हैं:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;React Router v5&lt;/th&gt;
&lt;th&gt;React Router v6 (Modern)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Main Container&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;Switch&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;Routes&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Route Render Syntax&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;Route component={Home} /&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;Route element={&amp;lt;Home /&amp;gt;} /&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Navigation Hook&lt;/td&gt;
&lt;td&gt;&lt;code&gt;useHistory()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;useNavigate()&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exact Matching&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;exact&lt;/code&gt; prop required&lt;/td&gt;
&lt;td&gt;Automatic matching (No exact required)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  React Router को Step-by-Step अपने Project में कैसे Setup करें?
&lt;/h2&gt;

&lt;p&gt;चलिए, अब zero से start करते हैं। हम एक complete working React application setup करेंगे जिसमें different pages (Home, About, Dashboard) होंगे, Dynamic Routing होगी, और modern navigation techniques का use होगा।&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1: React Project Create करें (Vite के साथ)
&lt;/h3&gt;

&lt;p&gt;सबसे पहले अपने terminal में जाएँ और नीचे दिए गए command की मदद से एक fresh Vite + React project generate करें:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm create vite@latest my-routing-app -- --template react
cd my-routing-app
npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: React Router DOM Package Install करें
&lt;/h3&gt;

&lt;p&gt;React Router को custom web apps के लिए support करने के लिए हमें &lt;code&gt;react-router-dom&lt;/code&gt; package install करना होता है। अपने project terminal में इसे run करें:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install react-router-dom
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Component Structure Design करें
&lt;/h3&gt;

&lt;p&gt;हमारा application professional दिखे, इसलिए हम clear folder structure follow करेंगे। अपने &lt;code&gt;src&lt;/code&gt; directory के अंदर नीचे दिए गए format में components और pages create करें:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/
 ├── components/
 │    └── Navbar.jsx
 ├── pages/
 │    ├── Home.jsx
 ├── pages/
 │    ├── About.jsx
 ├── pages/
 │    ├── Profile.jsx
 ├── pages/
 │    ├── NotFound.jsx
 ├── App.jsx
 └── main.jsx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  Production-Ready React Router Implementation (Complete Code)
&lt;/h2&gt;

&lt;p&gt;ध्यान देने वाली बात ये है कि React Router को configure करने के लिए हमें application को &lt;code&gt;&amp;lt;BrowserRouter&amp;gt;&lt;/code&gt; wrapper के अंदर wrap करना पड़ता है। चलिए, एक-एक करके सभी files को pure code के साथ code करते हैं।&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Root Entry Config: &lt;code&gt;src/main.jsx&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;यहाँ हम पूरे React application को React Router context provide करने के लिए &lt;code&gt;&amp;lt;BrowserRouter&amp;gt;&lt;/code&gt; component setup करेंगे।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App.jsx';
import { BrowserRouter } from 'react-router-dom';
import './index.css';

ReactDOM.createRoot(document.getElementById('root')).render(





);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Dynamic Components Setup: Pages
&lt;/h3&gt;

&lt;p&gt;अब हमारे dynamic routes के लिए screens (pages) generate करते हैं।&lt;/p&gt;

&lt;h4&gt;
  
  
  File: &lt;code&gt;src/pages/Home.jsx&lt;/code&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';

export default function Home() {
  return (

      # 🏡 Home Page


      React Router Masterclass में आपका स्वागत है! यह हमारा landing page है।



  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  File: &lt;code&gt;src/pages/About.jsx&lt;/code&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';

export default function About() {
  return (

      # ℹ️ About Page


      हम यहाँ React applications में seamless routing handle करना सीख रहे हैं।



  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  File: &lt;code&gt;src/pages/Profile.jsx&lt;/code&gt; (Dynamic Component)
&lt;/h4&gt;

&lt;p&gt;हम dynamic routing के concept को show करने के लिए Route URLs से parameter parse करने वाले component का handle setup करेंगे।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import { useParams } from 'react-router-dom';

export default function Profile() {
  // useParams Hook URL dynamically match context parse karta hai
  const { username } = useParams();

  return (

      # 👤 User Profile Page


      Welcome back, {username}!



  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  File: &lt;code&gt;src/pages/NotFound.jsx&lt;/code&gt; (404 Fallback Component)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import { useNavigate } from 'react-router-dom';

export default function NotFound() {
  const navigate = useNavigate();

  return (

      # 404


      ## Oops! Page Not Found


      जिस page को आप ढूँढ रहे हैं, वो अस्तित्व में नहीं है।


       navigate('/')} 
        style={{
          background: '#06b6d4',
          color: '#fff',
          border: 'none',
          padding: '10px 20px',
          borderRadius: '5px',
          cursor: 'pointer',
          fontWeight: 'bold'
        }}
      &amp;gt;
        Go to Home


  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Global Navigation Layout: &lt;code&gt;src/components/Navbar.jsx&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pro-Tip:&lt;/strong&gt; कभी भी direct HTML anchor tags (&lt;code&gt;&amp;lt;a href="..."&amp;gt;&lt;/code&gt;) का use React Router में मत करना। Anchor tags browser refresh trigger कर देते हैं। इसकी जगह हमेशा &lt;code&gt;&amp;lt;Link&amp;gt;&lt;/code&gt; या &lt;code&gt;&amp;lt;NavLink&amp;gt;&lt;/code&gt; component का ही use करना चाहिए जो internal application transitions manage करते हैं।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import { NavLink } from 'react-router-dom';

export default function Navbar() {
  // Active route styling definition
  const linkStyle = ({ isActive }) =&amp;gt; ({
    textDecoration: 'none',
    color: isActive ? '#06b6d4' : '#333',
    fontWeight: isActive ? 'bold' : 'normal',
    marginRight: '20px',
    fontSize: '18px'
  });

  return (

      MyRouterApp

        Home
        About
        My Profile


  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Route Handler Mapping: &lt;code&gt;src/App.jsx&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;यहाँ हम अपने component mapping को finalize करेंगे। &lt;code&gt;&amp;lt;Routes&amp;gt;&lt;/code&gt; tag के अंदर specific configurations dynamic control flow create करती हैं।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import { Routes, Route } from 'react-router-dom';
import Navbar from './components/Navbar';
import Home from './pages/Home';
import About from './pages/About';
import Profile from './pages/Profile';
import NotFound from './pages/NotFound';

export default function App() {
  return (



      {/* Route paths selection setup */}

        } /&amp;gt;
        } /&amp;gt;

        {/* Dynamic Route: 'username' value state parameters map context create karegi */}
        } /&amp;gt;

        {/* Wildcard 404 Fallback: Matching default route */}
        } /&amp;gt;


  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  Dynamic Routing और Standard Hooks को कैसे समझें?
&lt;/h2&gt;

&lt;p&gt;React Router v6 हमें powerful core hooks provide करता है, जो application components के dynamic context manipulation को बेहद आसान बना देते हैं। चलिए, इन essential hooks के working patterns को practical code use-case के साथ समझते हैं।&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;code&gt;useParams()&lt;/code&gt; Hook
&lt;/h3&gt;

&lt;p&gt;जब dynamic URL structure render करनी हो (जैसे Product display: &lt;code&gt;/product/:productId&lt;/code&gt;, User profiles: &lt;code&gt;/profile/:id&lt;/code&gt;), तब &lt;code&gt;useParams&lt;/code&gt; hook route values direct map करता है।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// URL context structure: '/product/9988'
const { productId } = useParams();
// output validation: 9988
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. &lt;code&gt;useNavigate()&lt;/code&gt; Hook
&lt;/h3&gt;

&lt;p&gt;यदि user interaction (जैसे Form submit button click, successful login API feedback) के validate होने पर programmatically navigate करना हो, तो &lt;code&gt;useNavigate&lt;/code&gt; hook direct transition inject कर देता है।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const navigate = useNavigate();

const handleLogin = () =&amp;gt; {
  // Login implementation logic executes...
  navigate('/dashboard');
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. &lt;code&gt;useLocation()&lt;/code&gt; Hook
&lt;/h3&gt;

&lt;p&gt;यह hook complete browser window position tracking state dynamic monitor करता है। इसके state logic property parameters path analytics record verify करने में help करते हैं।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { useLocation } from 'react-router-dom';

const location = useLocation();
console.log(location.pathname); // console outputs: current URL path context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  React Router में आने वाले 2 Common Errors और उनके Solutions
&lt;/h2&gt;

&lt;p&gt;जब developers React Router setup करना शुरू करते हैं, तो वे अक्सर कुछ errors का सामना करते हैं। चलिए, देखते हैं कि वे &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;error&lt;/a&gt; क्यों आते हैं और उन्हें कैसे solve किया जाता है।&lt;/p&gt;

&lt;h3&gt;
  
  
  Error 1: "Cannot read property 'pathname' of undefined" या "useNavigate() can only be used in the context of a &amp;lt;Router&amp;gt;"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;कारण:&lt;/strong&gt; यह &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;error&lt;/a&gt; तब आता है जब आप React Router के hooks (जैसे &lt;code&gt;useNavigate&lt;/code&gt;, &lt;code&gt;useLocation&lt;/code&gt;) का use ऐसे component में करते हैं जो &lt;code&gt;&amp;lt;BrowserRouter&amp;gt;&lt;/code&gt; wrapper context के बाहर defined है।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; सुनिश्चित करें कि आपकी complete file tree में &lt;code&gt;&amp;lt;BrowserRouter&amp;gt;&lt;/code&gt; root component scale पर nested component properties को full wrapping pattern dynamic coverage provide कर रहा हो (जैसे हमने &lt;code&gt;main.jsx&lt;/code&gt; में wrapper handle context apply किया है)।&lt;/p&gt;

&lt;h3&gt;
  
  
  Error 2: Production Hosting पर Page Refresh करने पर "404 Not Found" Error
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;कारण:&lt;/strong&gt; Local server पर routing perfect चलती है, लेकिन Netlify, Vercel या AWS S3 पर project host करने पर dynamic pages को refresh करने पर browser 404 &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;error&lt;/a&gt; देता है। ऐसा इसलिए होता है क्योंकि static page hosting server direct URL handle request (जैसे &lt;code&gt;/about&lt;/code&gt;) browser window layout file level fallback config verify नहीं कर पाता।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; आपको host server redirects file configuration write करनी होती है जो सभी route inputs को fallback &lt;code&gt;index.html&lt;/code&gt; default fallback map redirection processing coordinate path logic pass करेगी:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;For Netlify:&lt;/strong&gt; Root public path folder layout inside configuration file &lt;code&gt;_redirects&lt;/code&gt; write करें और उसमें यह command line save करें:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/*    /index.html   200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;For Vercel:&lt;/strong&gt; Root file path configurations location pattern &lt;code&gt;vercel.json&lt;/code&gt; check configuration parameters definition handle करें:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  Scalability &amp;amp; Performance Best Practice: Lazy Loading and Suspense
&lt;/h2&gt;

&lt;p&gt;जब dynamic routing applications का content load size bundle memory metrics scale cross करने लगता है, तब React code performance optimization strategies का implement verify dynamic scale handle validation structure provide करता है।&lt;/p&gt;

&lt;p&gt;सभी components को core load bundle initial configuration level render execution logic map pass runtime download processing save use behavior runtime system improve provide strategy pattern logic support block load dynamic definition compile render code setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { lazy, Suspense } from 'react';
import { Routes, Route } from 'react-router-dom';
import Navbar from './components/Navbar';

// Performance optimization setup using lazy component definitions
const Home = lazy(() =&amp;gt; import('./pages/Home'));
const About = lazy(() =&amp;gt; import('./pages/About'));
const Profile = lazy(() =&amp;gt; import('./pages/Profile'));

export default function App() {
  return (


      {/* Route code-splitting with boundary loader wrapper */}
      Loading page dynamic content...}&amp;gt;

          } /&amp;gt;
          } /&amp;gt;
          } /&amp;gt;



  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ऊपर दिया गया snippet component levels load configurations structure state scale improve runtime execution control block optimize dynamic support logic structure verify runtime system level apply करता है।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;p&gt;तो दोस्तों, आज हमने सीखा कि React Router क्या है, Single Page Applications (SPA) के लिए यह क्यों आवश्यक है, v5 और v6 में क्या अंतर है, और dynamic routing, nested layouts व custom performance parameters को hooks की मदद से कैसे manage किया जाता है। Routing implementation logic configure करते समय official guidelines help pattern integration rules references tracking metrics layout process setup detail standard study rules standard setup track verification follow system pattern access scale structure code documentation metrics review dynamic optimize configurations support guidelines check &lt;a href="https://reactrouter.com/" rel="noopener noreferrer"&gt;React Router Official Documentation&lt;/a&gt; resource link help verify complete pattern validation support process update load logic block optimize update standard analyze structure verification control execution state check check verify build load setups perform complete update layout rules design process build clear track check can guide.&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently Asked Questions (FAQs)
&lt;/h3&gt;

&lt;p&gt;Q1: React Router DOM package install करना क्यों आवश्यक है, direct standard react-router module install क्यों नहीं करते?&lt;br&gt;
react-router core package है जिसमें routing की common functionality (hooks, routes match logic) होती है। Web browsers पर app development करने के लिए हमें DOM support integrations runtime components control logic bindings mapping logic की ज़रूरत होती है, जो सिर्फ react-router-dom container libraries package API functions configuration support patterns map provides handle details verification flow verify provide access use scale structure coordinate metrics define logic standard check verify can system setup scale execution control base.&lt;br&gt;
Q2: standard React Link component and anchor standard element a tag href properties logic match base difference verification rules criteria specify use check handle metrics load parameter detail options context specify access verify kya features options logic setup pattern perform use level?&lt;br&gt;
Anchor link elements direct dynamic user requests browser refresh default window parameters check reload parameters perform flow reset actions track execution state processing verify behavior validation control pattern level layout execution map process trigger apply coordinates. Link element navigation block browser click target capture dynamic client routing system state background configurations changes dynamic component render execute complete without performance issues speed browser memory configurations optimize dynamic.&lt;br&gt;
Q3: Dynamic Nested routes dynamic nesting Outlet handle context verify layouts process control pattern setup configuration structure rules kaise parameters implementation system design track apply?&lt;br&gt;
Nested layout support setups dynamic route nesting level structure handle path verification parameter validation control setup use Outlet nested child routes components location space parameters display runtime template dynamically perform child page swapping dynamic layouts process manage structures handle support metrics code scale levels verify performance options coordinates pattern use setups verify parameters render dynamic coordinates structure verify system.&lt;br&gt;
Q4: useParams update use params values read component levels properties standard values access syntax update design configuration kaise details analyze logic track handle validation patterns parameters verify execute?&lt;br&gt;
useParams component standard logic runtime variable path variable keys tracking map access structure control check logic process dynamic keys tracking validation pattern values map setup configuration system profiles routes parameters like (path: "/profile/:username") handle process parameter read destruct variable like: const { username } = useParams() handle direct parsing verification output dynamically details check provide standard.&lt;br&gt;
Q5: Dynamic React context component configuration nested structure error dynamic page refresh routing control state production site issues resolve parameter rules kaise performance track configurations system execute?&lt;br&gt;
Production server systems index entry default target check file request system redirect standard config control maps file coordinates support verification configurations design runtime mapping handle like _redirects dynamic instructions static parameters deployment structures setups verification track fallback files dynamic map layout support check patterns instructions.&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>React Server Actions Complete Guide (React 19 in (Hindi)</title>
      <dc:creator>banti kevat</dc:creator>
      <pubDate>Fri, 17 Jul 2026 10:16:36 +0000</pubDate>
      <link>https://dev.to/banti_kevat_8e2d123bb7994/react-server-actions-complete-guide-react-19-in-hindi-4k9l</link>
      <guid>https://dev.to/banti_kevat_8e2d123bb7994/react-server-actions-complete-guide-react-19-in-hindi-4k9l</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftazciz8tjo086q2ovvnb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftazciz8tjo086q2ovvnb.png" alt="React Server Actions Complete Guide (React 19 in Hindi)" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
React Server Actions सीखें! React 19 की इस हिंदी गाइड में सीखें बिना API endpoints के सीधे database queries और state updates कैसे करते हैं।&lt;/p&gt;

&lt;p&gt;क्या आप भी React Applications में form submit करने के लिए बार-बार API Routes और Controllers बनाकर थक चुके हैं? सोचिए अगर आप Client Component के बटन क्लिक पर सीधे Server का function execute कर सकें, वो भी बिना किसी Fetch request या Axios के! सुनने में जादू जैसा लगता है न? लेकिन React 19 ने इसी जादू को हकीकत बना दिया है।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Quick Answer:&lt;/strong&gt; React Server Actions, React 19 का एक क्रांतिकारी Feature है जो बिना किसी manual REST API endpoints के, Client-side Components से सीधे Server-side code (जैसे Database operations या Authentication) को asynchronous functions के ज़रिए call करने की अनुमति देता है। यह development speed को बढ़ाता है और client state management को आसान बनाता है।&lt;br&gt;
दोस्तों, इस Master-class tutorial में हम &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;ReactJS&lt;/a&gt; के सबसे शक्तिशाली Feature—&lt;strong&gt;React Server Actions&lt;/strong&gt; को बिल्कुल गहराई से समझेंगे। अगर आप एक senior developer की तरह clean और scalable code लिखना चाहते हैं, तो यह guide आपके लिए ही है। चलिए शुरू करते हैं!&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  React Server Actions क्या है और React 19 में इसकी क्यों ज़रूरत पड़ी?
&lt;/h2&gt;

&lt;p&gt;पुराने दिनों को याद कीजिए जब हमें एक Simple Login Form बनाना होता था। हम क्या करते थे? पहले client-side पर form state manage करते थे (जैसे &lt;code&gt;useState&lt;/code&gt;), फिर server-side पर &lt;a href="https://itinfohubs.blogspot.com/search/label/NodeJS" rel="noopener noreferrer"&gt;NodeJS&lt;/a&gt; या &lt;a href="https://itinfohubs.blogspot.com/search/label/ExpressJS" rel="noopener noreferrer"&gt;ExpressJS&lt;/a&gt; में एक API Route बनाते थे, फिर &lt;code&gt;fetch()&lt;/code&gt; या &lt;code&gt;axios.post()&lt;/code&gt; का use करके request भेजते थे, और अंत में loading, error, और success states को manually handle करते थे।&lt;/p&gt;

&lt;p&gt;इस traditional workflow में दो बड़ी परेशानियां थीं:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Client-Server Disconnect:&lt;/strong&gt; Server और Client के बीच data type synchronization का कोई direct तरीका नहीं था। अगर API Schema में कोई बदलाव हुआ, तो Client Code टूटने का डर हमेशा रहता था।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redundant State Management:&lt;/strong&gt; सिर्फ एक Form Submit करने के लिए हमें &lt;code&gt;isLoading&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;, और &lt;code&gt;data&lt;/code&gt; जैसी अनगिनत states बनानी पड़ती थीं, जिससे code काफी verbose हो जाता था।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;React 19 ने Server Components की ताकत को आगे बढ़ाते हुए &lt;strong&gt;React Server Actions&lt;/strong&gt; को introduce किया। अब आप सीधे Server-side functions को Client Components में bind कर सकते हैं। जब Client उस function को call करता है, तो React background में एक network request (POST Request) खुद handle करता है।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  React Server Actions कैसे काम करता है? (Under the Hood Architecture)
&lt;/h2&gt;

&lt;p&gt;ध्यान देने वाली बात ये है कि React Server Actions कोई magic नहीं है, बल्कि यह एक highly-optimized abstraction है। जब आप किसी function के top पर &lt;code&gt;"use server"&lt;/code&gt; directive लिखते हैं, तो React compiler समझ जाता है कि इस code को server पर ही रखना है और client bundle में export नहीं करना है।&lt;/p&gt;

&lt;p&gt;🏗️ React Server Actions Architecture&lt;/p&gt;

&lt;p&gt;Client Form (UI)&lt;br&gt;
➔&lt;br&gt;
Auto-Generated POST Request&lt;br&gt;
➔&lt;br&gt;
Server Action Function&lt;br&gt;
➔&lt;br&gt;
Direct Database Query&lt;/p&gt;

&lt;p&gt;Diagram: Client triggering a Server Action, passing serialized arguments, and executing securely on Server.&lt;/p&gt;

&lt;p&gt;जब user form submit करता है, तो React background में dynamic reference creation के ज़रिए parameters को serialize करता है और server पर transfer करता है। Server Action execute होने के बाद UI dynamically update हो जाती है, वो भी बिना full page reload के।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  React Server Actions vs Traditional API Fetching
&lt;/h2&gt;

&lt;p&gt;आइए इन दोनों approach को आमने-सामने रखकर देखते हैं ताकि आपको अंतर साफ समझ आ जाए:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Traditional API Fetching&lt;/th&gt;
&lt;th&gt;React Server Actions&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;API Route Boilerplate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;हाँ, अलग से route handlers (/api/route) बनाने पड़ते हैं।&lt;/td&gt;
&lt;td&gt;नहीं, सीधे JS/TS function की तरह call होता है।&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;API endpoints public होते हैं, CORS और CORS validation ज़रूरी है।&lt;/td&gt;
&lt;td&gt;यह server-only environment में चलता है, code client bundle में लीक नहीं होता।&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;State Hook Redundancy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Multiple states (loading, errors, status) manual manage करनी पड़ती हैं।&lt;/td&gt;
&lt;td&gt;React 19 Hooks जैसे &lt;code&gt;useActionState&lt;/code&gt; और &lt;code&gt;useFormStatus&lt;/code&gt; से automatic handle होता है।&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bundle Size&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Client-side libraries (जैसे Axios) bundle size बढ़ाती हैं।&lt;/td&gt;
&lt;td&gt;Zero client-side JS weight, React framework handles networking.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  React Server Actions का Setup और Implementation (Step-by-Step)
&lt;/h2&gt;

&lt;p&gt;तो दोस्तों, अब practical coding का समय आ गया है। हम एक real-world, production-ready product catalog system बनाएंगे, जहां हम &lt;a href="https://itinfohubs.blogspot.com/search/label/MongoDB" rel="noopener noreferrer"&gt;MongoDB&lt;/a&gt; या Database में data save करेंगे। इसके लिए हम &lt;a href="https://itinfohubs.blogspot.com/search/label/NextJS" rel="noopener noreferrer"&gt;NextJS&lt;/a&gt; या vanilla React 19 architecture का use करेंगे।&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1: Project Structure setup करें
&lt;/h3&gt;

&lt;p&gt;सबसे पहले अपने project में files को इस तरह organize करें:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/
├── actions/
│   └── productActions.js  &amp;lt;-- Server Actions File (with "use server")
├── components/
│   └── AddProductForm.jsx &amp;lt;-- Client component (Form UI)
└── database/
    └── dbConnect.js       &amp;lt;-- Simulated database connection

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Database Connection File (dbConnect.js)
&lt;/h3&gt;

&lt;p&gt;हम एक clean database simulation utility बनाएंगे जो production environments जैसी query handling और delay mimic करेगी:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// src/database/dbConnect.js

// Mock database storage
let productsDatabase = [
  { id: 1, name: "Mechanical Keyboard", price: 4999, category: "Electronics" }
];

export async function saveProductToDB(productData) {
  // Database saving simulation (2 seconds network latency)
  await new Promise((resolve) =&amp;gt; setTimeout(resolve, 2000));

  const newProduct = {
    id: productsDatabase.length + 1,
    ...productData,
    price: parseFloat(productData.price)
  };

  productsDatabase.push(newProduct);
  return newProduct;
}

export async function fetchAllProducts() {
  return [...productsDatabase];
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Server Action Define करें (productActions.js)
&lt;/h3&gt;

&lt;p&gt;यहाँ सबसे महत्वपूर्ण ध्यान देने वाली बात ये है कि file के बिल्कुल शीर्ष (top) पर &lt;code&gt;"use server"&lt;/code&gt; लिखना अनिवार्य है।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// src/actions/productActions.js
"use server";

import { saveProductToDB } from "../database/dbConnect";

export async function addNewProductAction(prevState, formData) {
  try {
    const name = formData.get("name");
    const price = formData.get("price");
    const category = formData.get("category");

    // Server-side Validation
    if (!name || name.trim().length &amp;lt; 3) {
      return {
        success: false,
        error: "Product का नाम कम से कम 3 characters का होना चाहिए।"
      };
    }

    if (!price || isNaN(price) || parseFloat(price) &amp;lt;= 0) {
      return {
        success: false,
        error: "कृपया एक वैध और positive price डालें।"
      };
    }

    // Direct Database Operation on the Server!
    const savedProduct = await saveProductToDB({ name, price, category });

    return {
      success: true,
      data: savedProduct,
      message: `${savedProduct.name} को database में सफलतापूर्वक save कर दिया गया है!`
    };

  } catch (err) {
    return {
      success: false,
      error: "सर्वर पर कुछ गड़बड़ हो गई: " + err.message
    };
  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Client Form Component बनाना (AddProductForm.jsx)
&lt;/h3&gt;

&lt;p&gt;अब हम React 19 के नए React Hook &lt;code&gt;useActionState&lt;/code&gt; का उपयोग करेंगे, जो server actions के response और pending states को manage करने में हमारी मदद करता है।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// src/components/AddProductForm.jsx
"use client";

import React, { useActionState } from "react";
import { addNewProductAction } from "../actions/productActions";

// Custom submit button inside client form to leverage pending status
function SubmitButton() {
  // We can write additional UI states or handle loader here
  return (
    &amp;lt;button 
      type="submit" 
      style={{
        padding: "12px 24px",
        background: "#2563eb",
        color: "#ffffff",
        border: "none",
        borderRadius: "6px",
        fontSize: "16px",
        cursor: "pointer",
        fontWeight: "600"
      }}
    &amp;gt;
      Product Add करें
    &amp;lt;/button&amp;gt;
  );
}

export default function AddProductForm() {
  // useActionState Hook syntax in React 19:
  // const [state, actionTrigger, isPending] = useActionState(serverAction, initialState);
  const [state, formAction, isPending] = useActionState(addNewProductAction, null);

  return (
    &amp;lt;div style={{ maxWidth: "500px", margin: "40px auto", fontFamily: "sans-serif" }}&amp;gt;
      &amp;lt;h2 style={{ color: "#1e293b", borderBottom: "2px solid #e2e8f0", paddingBottom: "10px" }}&amp;gt;
        🛡️ Add New Product (React 19 Server Action)
      &amp;lt;/h2&amp;gt;

      &amp;lt;form action={formAction} style={{ display: "flex", flexDirection: "column", gap: "16px", marginTop: "20px" }}&amp;gt;
        &amp;lt;div style={{ display: "flex", flexDirection: "column", gap: "6px" }}&amp;gt;
          &amp;lt;label style={{ fontWeight: "600", color: "#475569" }}&amp;gt;Product Name:&amp;lt;/label&amp;gt;
          &amp;lt;input 
            type="text" 
            name="name" 
            placeholder="जैसे: Gaming Mouse" 
            required
            style={{ padding: "10px", borderRadius: "6px", border: "1px solid #cbd5e1" }}
          /&amp;gt;
        &amp;lt;/div&amp;gt;

        &amp;lt;div style={{ display: "flex", flexDirection: "column", gap: "6px" }}&amp;gt;
          &amp;lt;label style={{ fontWeight: "600", color: "#475569" }}&amp;gt;Price (INR):&amp;lt;/label&amp;gt;
          &amp;lt;input 
            type="number" 
            name="price" 
            placeholder="जैसे: 1500" 
            required
            style={{ padding: "10px", borderRadius: "6px", border: "1px solid #cbd5e1" }}
          /&amp;gt;
        &amp;lt;/div&amp;gt;

        &amp;lt;div style={{ display: "flex", flexDirection: "column", gap: "6px" }}&amp;gt;
          &amp;lt;label style={{ fontWeight: "600", color: "#475569" }}&amp;gt;Category:&amp;lt;/label&amp;gt;
          &amp;lt;select name="category" style={{ padding: "10px", borderRadius: "6px", border: "1px solid #cbd5e1" }}&amp;gt;
            &amp;lt;option value="Electronics"&amp;gt;Electronics&amp;lt;/option&amp;gt;
            &amp;lt;option value="Accessories"&amp;gt;Accessories&amp;lt;/option&amp;gt;
            &amp;lt;option value="Books"&amp;gt;Books&amp;lt;/option&amp;gt;
          &amp;lt;/select&amp;gt;
        &amp;lt;/div&amp;gt;

        {isPending ? (
          &amp;lt;p style={{ color: "#d97706", fontWeight: "600" }}&amp;gt;⏳ Database में saving चल रही है...&amp;lt;/p&amp;gt;
        ) : (
          &amp;lt;SubmitButton /&amp;gt;
        )}

        {/* State messages handling */}
        {state &amp;amp;&amp;amp; !state.success &amp;amp;&amp;amp; (
          &amp;lt;div style={{ color: "#dc2626", background: "#fee2e2", padding: "12px", borderRadius: "6px", fontWeight: "500" }}&amp;gt;
            ⚠️ {state.error}
          &amp;lt;/div&amp;gt;
        )}

        {state &amp;amp;&amp;amp; state.success &amp;amp;&amp;amp; (
          &amp;lt;div style={{ color: "#16a34a", background: "#dcfce7", padding: "12px", borderRadius: "6px", fontWeight: "500" }}&amp;gt;
            🎉 {state.message}
          &amp;lt;/div&amp;gt;
        )}
      &amp;lt;/form&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;शानदार! इस approach का सबसे बड़ा फायदा देखा आपने? हमें client components में loading state handle करने के लिए &lt;code&gt;useState(false)&lt;/code&gt; या toggling functions नहीं लिखने पड़े। React 19 के &lt;code&gt;useActionState&lt;/code&gt; ने &lt;code&gt;isPending&lt;/code&gt; flag automatic handle कर लिया।&lt;/p&gt;

&lt;p&gt;इसके बारे में गहराई से जानने के लिए आप आधिकारिक &lt;a href="https://react.dev" rel="noopener noreferrer"&gt;React Documentation&lt;/a&gt; को refer कर सकते हैं जो comprehensive standards provide करता है।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  React Server Actions के Common Errors और उन्हें Debug/Fix करने का तरीका
&lt;/h2&gt;

&lt;p&gt;दोस्तों, जब आप production apps पर काम कर रहे होंगे, तो कुछ आम &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;error&lt;/a&gt; आ सकते हैं। आइए देखते हैं उन्हें चुटकियों में कैसे &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;fix error&lt;/a&gt; किया जाता है:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. "Error: Only plain objects, and a few built-ins, can be passed to Client Components from Server Components"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;कारण:&lt;/strong&gt; यह React 19 का Serialization error है। जब आप Server Action से कोई ऐसा complex object return करते हैं जिसमें functions, custom class instances, या dates होती हैं, तो React उन्हें serialize नहीं कर पाता।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;समाधान:&lt;/strong&gt; हमेशा database response से clean raw JSON return करें। उदाहरण के लिए, Mongoose documents या SQL results को send करने से पहले destructuring या copy कर लें:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// ❌ गलत तरीका
return { user: userDoc }; // userDoc contains database functions

//  सही तरीका
return { 
  user: {
    id: userDoc._id.toString(),
    name: userDoc.name,
    email: userDoc.email
  } 
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. "Error: Action expected to be run on server but executed on client"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;कारण:&lt;/strong&gt; आपने Server action file के top पर &lt;code&gt;"use server"&lt;/code&gt; directive लगाना भूल गए हैं या file extension proper manage नहीं है।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;समाधान:&lt;/strong&gt; सुनिश्चित करें कि आपकी Action files में शीर्ष पर &lt;code&gt;"use server"&lt;/code&gt; line single quotes या double quotes में लिखी हुई हो, और वह blank spaces से पहले हो।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices: Performance, Security, और Scalability
&lt;/h2&gt;

&lt;p&gt;एक senior developer होने के नाते मैं आपको हमेशा सलाह दूंगा कि इन best practices का पालन करें:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Zod Schema से Validation करें:&lt;/strong&gt; Client-side validation को आसानी से bypass किया जा सकता है। इसलिए Server Actions के अंदर Zod जैसी libraries का उपयोग करके parameters का schema validate ज़रूर करें।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate Limiting लगाएं:&lt;/strong&gt; चूंकि Server Actions asynchronous API endpoints की तरह behave करते हैं, वे DDOS attacks के प्रति vulnerable हो सकते हैं। Client requests को session tokens के साथ match करें और limit constraints लागू करें।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimistic Updates का उपयोग करें:&lt;/strong&gt; जब user interface पर instantaneous feedback ज़रूरी हो, तो React 19 के &lt;code&gt;useOptimistic&lt;/code&gt; hook का उपयोग करें ताकि dynamic states fast load हो सकें।&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;p&gt;तो दोस्तों, हमने आज सीखा कि कैसे React Server Actions ने React Development Architecture को बिल्कुल बदलकर रख दिया है। अब हमें REST API endpoints बनाने, payloads serialize करने, और loading states की फिक्र करने की कोई आवश्यकता नहीं है। इस Guide के core code blocks को अपने machine पर run करें, modify करें और production apps में apply करें। ऐसे ही मजेदार React 19 concepts सीखते रहिए!&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently Asked Questions (FAQs)
&lt;/h3&gt;

&lt;p&gt;Q1: क्या React Server Actions का use सिर्फ Next.js में ही हो सकता है?&lt;br&gt;
नहीं, हालांकि Next.js इसे out-of-the-box support करता है, लेकिन Server Actions React 19 runtime का core spec feature है। इसे किसी भी Server-Components architecture support करने वाले Bundler या Framework (जैसे Remix, Expo, Parcel) के साथ implement किया जा सकता है।&lt;br&gt;
Q2: Server Actions, API Routes से ज़्यादा secure क्यों माने जाते हैं?&lt;br&gt;
क्योंकि Server Actions का code client bundle में कभी compile होकर नहीं जाता। इसमें dynamic tokens और database queries directly use हो सकती हैं, जो security leaks और endpoint sniffing को 100% block करती हैं।&lt;br&gt;
Q3: क्या Server Actions का use file upload करने के लिए किया जा सकता है?&lt;br&gt;
हाँ, बिल्कुल! आप FormData object में binary image/video metadata directly accept कर सकते हैं और Server Action के अंदर AWS S3 या Cloudinary SDK call करके direct uploads handle कर सकते हैं।&lt;br&gt;
Q4: क्या "use server" का मतलब code backend (NodeJS) पर run होगा?&lt;br&gt;
हाँ, जब किसी function या file के top पर "use server" लिखा जाता है, तो React runtime उसे केवल node environments या edge servers पर compile करता है। Browser उसे execute करने के लिए specialized network layer request का सहारा लेता है।&lt;br&gt;
Q5: useActionState और useFormStatus hooks में क्या मुख्य अंतर है?&lt;br&gt;
useActionState form lifecycle response (data, pending flow) को complete control करता है, जबकि useFormStatus एक context hook है जो children components को deep context level पर submit element state (जैसे pending loading states) directly pass करता है।&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>React 19 Server Components Kya Hain (Deep Guide in (Hindi)</title>
      <dc:creator>banti kevat</dc:creator>
      <pubDate>Fri, 17 Jul 2026 06:01:39 +0000</pubDate>
      <link>https://dev.to/banti_kevat_8e2d123bb7994/react-19-server-components-kya-hain-deep-guide-in-hindi-48d</link>
      <guid>https://dev.to/banti_kevat_8e2d123bb7994/react-19-server-components-kya-hain-deep-guide-in-hindi-48d</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhoaai53b833bdgds8tav.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhoaai53b833bdgds8tav.png" alt="React 19 Server Components Kya Hain (Deep Guide in Hindi)" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
React 19 Server Components kya hain? Is complete Hindi guide me Server Components, Client Components aur practical integration step-by-step seekhein.&lt;/p&gt;

&lt;p&gt;दोस्तों, अगर आप वेब डेवलपमेंट की दुनिया में एक्टिव हैं, तो आपने React 19 के शोर-शराबे में "Server Components" का नाम ज़रूर सुना होगा। जब हम पहले &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;ReactJS&lt;/a&gt; में काम करते थे, तो हमारा सारा कोड Browser यानी Client-side पर चलता था। लेकिन React 19 ने पूरी गेम ही बदल दी है। अब हमारे पास Server पर सीधे render होने वाले Components की जादुई ताकत है।&lt;/p&gt;

&lt;p&gt;क्या आपने कभी सोचा है कि जब आपकी React App बड़ी होती जाती है, तो उसका bundle size भी भारी हो जाता है और slow network पर load होने में सदियां लगा देता है? इसी बड़ी समस्या को हल करने के लिए React टीम ने Server Components का कॉन्सेप्ट पेश किया है। आज हम और आप साथ मिलकर इस विषय की गहराई में उतरेंगे, कोडिंग करेंगे, और यह समझेंगे कि यह नया आर्किटेक्चर हमारी ऐप्स को सुपर-फ़ास्ट कैसे बनाता है।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Quick Answer:&lt;/strong&gt; React 19 Server Components (RSC) ek naya paradigm hai jo components ko client ke bajay direct server par render karta hai. Isse client-side javascript bundle size zero ho jata hai, security badhti hai, aur data fetching seedhe database se bina kisi extra API endpoints ke behatar speed se hoti hai.&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  React 19 Server Components क्या हैं और ये क्यों ज़रूरी हैं?
&lt;/h2&gt;

&lt;p&gt;सरल शब्दों में कहें तो, &lt;strong&gt;React Server Components (RSC)&lt;/strong&gt; ऐसे Components हैं जो सिर्फ और सिर्फ Web Server पर Execute होते हैं। इनका HTML और JSON Representation सर्वर पर ही तैयार हो जाता है और फिर उसे Browser को भेजा जाता है।&lt;/p&gt;

&lt;p&gt;पारंपरिक React (Client-side Rendering - CSR) में, जब कोई यूजर आपकी वेबसाइट पर आता है, तो ब्राउज़र सबसे पहले एक खाली HTML फाइल डाउनलोड करता है। उसके बाद, भारी-भरकम JavaScript Bundle डाउनलोड होती है, फिर React library लोड होती है, API से डेटा fetch होता है, और आखिरकार स्क्रीन पर कुछ दिखाई देता है। इस पूरी प्रोसेस में यूजर को "Loading..." स्पिनर देखना पड़ता है।&lt;/p&gt;

&lt;p&gt;ध्यान देने वाली बात ये है कि React 19 Server Components इस पूरी प्रोसेस को उलट देते हैं:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero Bundle Size:&lt;/strong&gt; जो Third-party Libraries (जैसे &lt;code&gt;marked&lt;/code&gt; या &lt;code&gt;date-fns&lt;/code&gt;) आप Server Component में यूज़ करते हैं, वे यूजर के ब्राउज़र में डाउनलोड ही नहीं होतीं। ब्राउज़र को सिर्फ साफ़-सुथरा UI मिलता है।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Direct Backend Access:&lt;/strong&gt; अब आपको Server Component के अंदर से डेटा fetch करने के लिए अलग से ExpressJS या &lt;a href="https://itinfohubs.blogspot.com/search/label/NodeJS" rel="noopener noreferrer"&gt;NodeJS&lt;/a&gt; API बनाने की ज़रूरत नहीं है। आप सीधे Database (जैसे PostgreSQL या &lt;a href="https://itinfohubs.blogspot.com/search/label/MongoDB" rel="noopener noreferrer"&gt;MongoDB&lt;/a&gt;) से Query कर सकते हैं।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better SEO &amp;amp; Core Web Vitals:&lt;/strong&gt; चूंकि सर्वर से पहले से रेंडर किया हुआ कंटेंट आता है, इसलिए Google के Search Crawlers को तुरंत कंटेंट मिल जाता है, जिससे SEO रैंकिंग बेहतरीन हो जाती है।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  Server Components और Client Components में क्या अंतर है?
&lt;/h2&gt;

&lt;p&gt;यहाँ पर बहुत से डेवलपर्स कंफ्यूज हो जाते हैं। उन्हें लगता है कि Server Components आने के बाद Client Components (जो हम सालों से लिखते आ रहे हैं) खत्म हो जाएंगे। ऐसा बिल्कुल नहीं है! दोनों का अपना अलग-अलग काम है और ये दोनों मिलकर एक बेहतरीन Ecosystem बनाते हैं।&lt;/p&gt;

&lt;p&gt;चलिए इन दोनों के अंतर को इस साफ़-सुथरी Table के ज़रिए समझते हैं:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature / Capability&lt;/th&gt;
&lt;th&gt;React Server Component (RSC)&lt;/th&gt;
&lt;th&gt;Client Component (CC)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Execution Environment&lt;/td&gt;
&lt;td&gt;केवल Server पर&lt;/td&gt;
&lt;td&gt;Browser (Client) और Server (Prerender) पर&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;React Hooks (useState, useEffect)&lt;/td&gt;
&lt;td&gt;नहीं कर सकते (Not Allowed)&lt;/td&gt;
&lt;td&gt;हाँ, पूरी तरह कर सकते हैं&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Direct Database / File System access&lt;/td&gt;
&lt;td&gt;हाँ, सीधे Access कर सकते हैं&lt;/td&gt;
&lt;td&gt;नहीं, Security Risk है&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browser APIs (window, localStorage)&lt;/td&gt;
&lt;td&gt;नहीं (Server पर window नहीं होता)&lt;/td&gt;
&lt;td&gt;हाँ, एक्सेस कर सकते हैं&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Client-side Bundle Size&lt;/td&gt;
&lt;td&gt;Zero (0 bytes)&lt;/td&gt;
&lt;td&gt;Component code के साइज़ पर निर्भर करता है&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  React 19 Server Components कैसे काम करते हैं? (Architecture Explained)
&lt;/h2&gt;

&lt;p&gt;इसे समझने के लिए हमें इसके फ्लो को देखना होगा। जब यूजर किसी पेज को रिक्वेस्ट करता है, तो बैकएंड पर क्या-क्या घटनाएं घटती हैं, इसे इस आर्किटेक्चर डायग्राम से समझिए:&lt;/p&gt;

&lt;p&gt;🏗️ RSC Rendering Architecture Flow&lt;/p&gt;

&lt;p&gt;User Request&lt;br&gt;
→&lt;br&gt;
React Server (Runs RSC)&lt;br&gt;
→&lt;br&gt;
Direct DB Fetch / Node.js&lt;br&gt;
→&lt;br&gt;
RSC Payload (JSON-like)&lt;br&gt;
→&lt;br&gt;
Browser (Hydration)&lt;/p&gt;

&lt;p&gt;Diagram: Server-side database logic compilation and dynamic streaming of React elements to client.&lt;/p&gt;

&lt;p&gt;चलिए इस प्रोसेस को आसान शब्दों में समझते हैं:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Step 1: Request Init:&lt;/strong&gt; यूजर आपकी वेबसाइट के एक specific path पर विजिट करता है।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 2: Server Execution:&lt;/strong&gt; React सर्वर-साइड पर आपके Server Components को रेंडर करना शुरू करता है। अगर इस कंपोनेंट में कोई Database Query या API Call है, तो उसे सर्वर पर ही Execute कर दिया जाता है।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 3: Generating Payload:&lt;/strong&gt; React एक विशेष फ़ॉर्मेट में आउटपुट जेनरेट करता है जिसे "RSC Payload" कहते हैं (यह शुद्ध HTML नहीं होता, बल्कि एक JSON-like स्ट्रक्चर होता है जो वर्चुअल DOM को दर्शाता है)।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 4: Stream to Client:&lt;/strong&gt; इस पेलोड को ब्राउज़र में स्ट्रीम किया जाता है। ब्राउज़र इसे पार्स करके UI रेंडर करता है और जहाँ भी Client Components होते हैं, उन्हें Interactive बनाता है (Hydration)।&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  Practical Code: Server Components को React 19 में कैसे implement करें?
&lt;/h2&gt;

&lt;p&gt;अब समय आ गया है कि हम अपनी कोडिंग स्किल्स का इस्तेमाल करें और एक वर्किंग, प्रोडक्शन-रेडी उदाहरण देखें। हम एक ई-कॉमर्स "Product Catalog Dashboard" बनाएंगे।&lt;/p&gt;

&lt;p&gt;इस प्रोजेक्ट में हम दो मुख्य चीज़ें बनाएंगे:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;ProductDashboard (Server Component):&lt;/strong&gt; यह सर्वर पर चलेगा, सीधे डेटाबेस या एक्सटर्नल API से प्रोडक्ट्स लाएगा और इसे बिना किसी JavaScript ओवरहेड के रेंडर करेगा।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;InteractiveCounter &amp;amp; SearchFilter (Client Component):&lt;/strong&gt; ये इंटरैक्टिविटी को हैंडल करेंगे जैसे कि लाइक बटन, सर्च बार, और यूज़र इनपुट।&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;चूंकि React 19 में कंपोनेंट डिफ़ॉल्ट रूप से Server Component होते हैं (अगर आप &lt;a href="https://itinfohubs.blogspot.com/search/label/NextJS" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; या React Server DOM का उपयोग कर रहे हैं), हमें Client Components के टॉप पर &lt;code&gt;"use client"&lt;/code&gt; डायरेक्टिव लिखना होता है।&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1: Client Component बनाना (Interactive UI Element)
&lt;/h3&gt;

&lt;p&gt;यह हमारा लाइक और सर्च कंपोनेंट होगा जो ब्राउज़र पर चलेगा। इसके टॉप पर &lt;code&gt;"use client"&lt;/code&gt; लिखना अनिवार्य है।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// ClientComponent.jsx
"use client";

import React, { useState } from "react";

export function InteractiveCounter({ initialLikes, productName }) {
  const [likes, setLikes] = useState(initialLikes);

  const handleLike = () =&amp;gt; {
    setLikes(prev =&amp;gt; prev + 1);
  };

  return (


        {productName} has {likes} 👍 likes!




        Like this product


  );
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Server Component बनाना (Database / API Fetcher)
&lt;/h3&gt;

&lt;p&gt;यह कंपोनेंट सीधे सर्वर पर चलेगा। यहाँ हम &lt;code&gt;async/await&lt;/code&gt; का सीधे उपयोग कर सकते हैं, जो कि पारंपरिक क्लाइंट कंपोनेंट्स में संभव नहीं था।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// ProductDashboard.jsx
import React from "react";
import { InteractiveCounter } from "./ClientComponent";

// Mock Database Fetch Function (सोचिए यह सीधे MongoDB या Postgres से जुड़ा है)
async function getProductsFromDB() {
  // रियल-वर्ल्ड में यहाँ आप DB.query() लिखेंगे
  // सर्वर-साइड डिले को दर्शाने के लिए Promise का उपयोग किया गया है
  await new Promise((resolve) =&amp;gt; setTimeout(resolve, 1000)); 

  return [
    { id: 1, name: "Developer Mech Keyboard", price: "$120", likes: 45, description: "Blue switches for satisfying clicks." },
    { id: 2, name: "UltraWide Ergonomic Monitor", price: "$450", likes: 112, description: "34-inch curved screen for massive productivity." },
    { id: 3, name: "Noise Cancelling Headphones", price: "$299", likes: 89, description: "Block out bugs and client noises effortlessly." }
  ];
}

export default async function ProductDashboard() {
  // सीधे Database से डेटा मंगाया बिना किसी Client-Side useEffect के!
  const products = await getProductsFromDB();

  return (

      # 🚀 Developer Store Dashboard (React 19 Server Components)



        यह पूरा कंपोनेंट सर्वर पर रेंडर हुआ है। ब्राउज़र में 0 bytes का एक्स्ट्रा डेटा फेचिंग कोड गया है!





        {products.map((product) =&amp;gt; (


              ## {product.name}


              {product.price}

            {product.description}



            {/* Server Component के अंदर Client Component को Nest करना */}


        ))}


  );
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ध्यान देने वाली बात ये है कि &lt;code&gt;ProductDashboard&lt;/code&gt; एक &lt;code&gt;async&lt;/code&gt; फंक्शन है। यह मुमकिन हुआ है केवल React 19 के Server Components की बदौलत! ब्राउज़र को सिर्फ अंतिम HTML मिलता है, और जो डेटाबेस सीक्रेट्स या सर्वर क्रेडेंशियल्स आप यहाँ इस्तेमाल करेंगे, वे कभी भी क्लाइंट-साइड बंडल में एक्सपोज़ नहीं होंगे।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  React 19 Server Components में Common Errors और उन्हें कैसे Fix करें?
&lt;/h2&gt;

&lt;p&gt;जब आप नया-नया काम शुरू करते हैं, तो कुछ गलतियाँ होना लाज़मी है। चलिए देखते हैं कि वे कौन सी बड़ी गलतियाँ हैं जिन्हें आपको करने से बचना है।&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Error: "useState is not defined" in Server Component
&lt;/h3&gt;

&lt;p&gt;यह सबसे आम &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;error&lt;/a&gt; है जो नए डेवलपर्स फेस करते हैं। यदि आप किसी Server Component के अंदर &lt;code&gt;useState&lt;/code&gt; या &lt;code&gt;useEffect&lt;/code&gt; का उपयोग करने की कोशिश करेंगे, तो React कंपाइलर चिल्ला उठेगा!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; समझें कि सर्वर पर स्टेट नहीं बदल सकती। यदि आपको स्टेट, इवेंट लिसनर्स (जैसे onClick, onChange), या लाइफसाइकल मेथड्स चाहिए, तो कंपोनेंट को एक अलग फाइल में रखें और उसके टॉप पर लिखें:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"use client";
// अब आप यहाँ useState का बेझिझक इस्तेमाल कर सकते हैं

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Error: Passing Non-Serializable Props to Client Components
&lt;/h3&gt;

&lt;p&gt;जब आप एक Server Component से Client Component को डेटा भेजते हैं (Props के रूप में), तो वह डेटा &lt;strong&gt;Serializable&lt;/strong&gt; होना चाहिए। इसका मतलब है कि आप Functions, Custom Classes, या Symbols को Props के तौर पर पास नहीं कर सकते।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;गलत तरीका:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Server Component के अंदर
&amp;lt;InteractiveCounter handleLike={() =&amp;gt; console.log("Liked")} /&amp;gt; 
// Error: Server Components cannot pass functions to Client Components

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;सही तरीका:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// केवल प्रिमिटिव डेटा जैसे String, Number, Array, Objects पास करें
&amp;lt;InteractiveCounter initialLikes={10} productName="Keyboard" /&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  RSC Performance Best Practices क्या हैं?
&lt;/h2&gt;

&lt;p&gt;अगर आप अपनी ऐप्लिकेशन को नेक्स्ट-लेवल पर ले जाना चाहते हैं, तो इन बेस्ट प्रैक्टिसेस को गाँठ बाँध लीजिए:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keep Client Components at the Leaves:&lt;/strong&gt; अपनी कंपोनेंट ट्री में क्लाइंट कंपोनेंट्स को जितना हो सके 'लीफ' (leaves - आख़िरी छोर) पर रखें। उदाहरण के लिए, पूरे हेडर को क्लाइंट कंपोनेंट बनाने के बजाय, केवल सर्च इनपुट या लॉगिन बटन को क्लाइंट कंपोनेंट बनाएं।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Suspense for Streaming:&lt;/strong&gt; भारी डेटा फेचिंग वाले Server Components को React के &lt;code&gt;&amp;lt;Suspense&amp;gt;&lt;/code&gt; के साथ रैप करें ताकि यूजर को तब तक एक खूबसूरत कंकाल (Skeleton Loader) दिखाई दे, जब तक डेटा सर्वर से लोड हो रहा है।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share Data Safely:&lt;/strong&gt; सुरक्षा का विशेष ध्यान रखें। किसी भी डेटाबेस क्रेडेंशियल को कभी भी गलती से भी क्लाइंट कंपोनेंट में इंपोर्ट न करें। इसके लिए आप &lt;code&gt;server\-only\&lt;/code&gt; लाइब्रेरी का इस्तेमाल कर सकते हैं जो कंपाइल टाइम पर ही एरर थ्रो कर देगी।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;अधिक जानकारी और गहराई से सीखने के लिए आप &lt;a href="https://react.dev" rel="noopener noreferrer"&gt;React Official Documentation&lt;/a&gt; पर जाकर उनके RSC स्पेक्स देख सकते हैं।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  Toh dosto, humne aaj seekha...
&lt;/h2&gt;

&lt;p&gt;दोस्तों, आज हमने React 19 Server Components के इस मास्टर-क्लास ट्यूटोरियल में समझा कि कैसे यह तकनीक वेब डेवलपमेंट के पुराने तौर-तरीकों को बदल रही है। यह न केवल ब्राउज़र के लोड को कम करती है, बल्कि हमारे वेब पेजों को बिजली की तरह तेज़ बनाती है। हमें अब डेटा फेचिंग के लिए लंबे-चौड़े Boilerplate कोड और API endpoints लिखने की आवश्यकता नहीं है, हम डायरेक्ट सर्वर से सुरक्षित रूप से डेटा ला सकते हैं।&lt;/p&gt;

&lt;p&gt;उम्मीद है कि इस व्यावहारिक कोडिंग उदाहरण और गहराई से की गई चर्चा के बाद अब आपको React 19 के इस नए आर्किटेक्चर को समझने में कोई हिचकिचाहट नहीं होगी। अब आप अपने अगले बड़े प्रोजेक्ट में बिना झिझक इसका इस्तेमाल कर सकते हैं और अपनी ऐप्लिकेशन की स्पीड को 10x बढ़ा सकते हैं। हैप्पी कोडिंग, दोस्तों!&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently Asked Questions (FAQs)
&lt;/h3&gt;

&lt;p&gt;Q1: क्या React 19 में आने के बाद Client Components ख़त्म हो जाएंगे?&lt;br&gt;
नहीं, बिल्कुल नहीं! React Server Components और Client Components एक दूसरे के पूरक (complementary) हैं। जहां Server Components डेटा फेचिंग और स्टेटलेस UI के लिए बेहतरीन हैं, वहीं Client Components इंटरएक्टिव एलिमेंट्स (जैसे Forms, Buttons, State toggles) के लिए बेहद ज़रूरी हैं।&lt;br&gt;
Q2: क्या मैं React Server Component में API calls के लिए Fetch का उपयोग कर सकता हूँ?&lt;br&gt;
हाँ, आप सीधे Fetch का उपयोग कर सकते हैं। वास्तव में, Server Components में Fetch का उपयोग करना क्लाइंट की तुलना में अधिक सुरक्षित और तेज़ होता है क्योंकि यह सीधे सर्वर-टू-सर्वर कम्युनिकेट करता है जिससे लेटेंसी कम हो जाती है।&lt;br&gt;
Q3: "use client" डायरेक्टिव का असली काम क्या है?&lt;br&gt;
"use client" डायरेक्टिव React बंडलर को बताता है कि यह फाइल और इसके सभी इम्पोर्ट्स केवल क्लाइंट (ब्राउज़र) साइड पर ही लोड और रन होने चाहिए। यह सर्वर-ओनली कोड और ब्राउज़र-ओनली कोड के बीच की सीमा रेखा तय करता है।&lt;br&gt;
Q4: क्या RSC के इस्तेमाल से हमारी वेबसाइट का SEO बेहतर होता है?&lt;br&gt;
हाँ, बिल्कुल! चूंकि Server Components का रेंडरिंग आउटपुट सीधे सर्वर से प्री-रेंडर होकर आता है, इसलिए सर्च इंजन क्रॉलर्स (जैसे Googlebot) को पूरा कंटेंट तुरंत मिल जाता है। इससे SEO परफॉरमेंस और इंडेक्सिंग स्पीड बहुत बेहतर हो जाती है।&lt;br&gt;
Q5: क्या हम Server Components में UseContext Hook का उपयोग कर सकते हैं?&lt;br&gt;
नहीं, Context API का उपयोग केवल Client Components में ही किया जा सकता है क्योंकि Context मूल रूप से क्लाइंट-साइड स्टेट शेयरिंग और डायनामिक री-रेंडरिंग पर निर्भर करता है, जो सर्वर पर उपलब्ध नहीं होता।&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>React Concurrent Mode Kya Hai (React 18 Feature in (Hindi)</title>
      <dc:creator>banti kevat</dc:creator>
      <pubDate>Thu, 16 Jul 2026 13:02:42 +0000</pubDate>
      <link>https://dev.to/banti_kevat_8e2d123bb7994/react-concurrent-mode-kya-hai-react-18-feature-in-hindi-59m7</link>
      <guid>https://dev.to/banti_kevat_8e2d123bb7994/react-concurrent-mode-kya-hai-react-18-feature-in-hindi-59m7</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnmcqzavpp7imzakpqyh9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnmcqzavpp7imzakpqyh9.png" alt="React Concurrent Mode Kya Hai (React 18 Feature in Hindi)" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
React Concurrent Mode kya hai aur ye aapke applications ko kaise super fast banata hai? Is complete Hindi guide me React 18 ke is revolutionary feature ko step-by-step code examples ke saath samjhein.&lt;/p&gt;

&lt;p&gt;Doston, jab hum koi badi React application banate hain, toh aksar humein "lag" ya UI "freeze" hone jaisi problems face karni padti hain. Kya aapne kabhi socha hai ki jab browser bhari-bhari calculations kar raha ho, tab humara UI responsive kaise reh sakta hai? Yahi wo jagah hai jahan &lt;strong&gt;React Concurrent Mode&lt;/strong&gt; picture me aata hai.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Quick Answer:&lt;/strong&gt; React Concurrent Mode ek aisa mechanism hai jo React ko ek sath multiple versions of UI par kaam karne ki permission deta hai. Isse heavy rendering ke dauran UI block nahi hota, jisse application smooth aur highly responsive bani rehti hai. Yeh feature rendering ko "interruptible" banakar performance optimize karta hai.&lt;/p&gt;
&lt;h2&gt;
  
  
  React Concurrent Mode kya hai aur ye kyun zaroori hai?
&lt;/h2&gt;

&lt;p&gt;Pehle ke React versions me, rendering ek "blocking" process thi. Matlab agar ek baar rendering shuru ho gayi, toh jab tak wo poori nahi hoti, browser koi aur input (jaise button click ya typing) process nahi kar sakta tha. Isse user experience kharab ho jata tha.&lt;/p&gt;

&lt;p&gt;Concurrent Mode ka matlab hai "Concurrently" kaam karna. React ab rendering process ko "pause" kar sakta hai, dusre important tasks (jaise user input) ko priority de sakta hai, aur phir wapas wahi se render continue kar sakta hai jahan se choda tha.&lt;/p&gt;
&lt;h3&gt;
  
  
  React Concurrent Mode kaise kaam karta hai?
&lt;/h3&gt;

&lt;p&gt;🏗️ Architecture Diagram&lt;/p&gt;

&lt;p&gt;User Event&lt;br&gt;
→&lt;br&gt;
Interruptible Render&lt;br&gt;
→&lt;br&gt;
Smooth UI&lt;/p&gt;

&lt;p&gt;Diagram: React rendering pipeline jo user interactions ko priority deti hai.&lt;/p&gt;

&lt;p&gt;React 18 me Concurrent Features ka use karne ke liye humein &lt;code&gt;useTransition&lt;/code&gt; aur &lt;code&gt;useDeferredValue&lt;/code&gt; jaise hooks milte hain. Ye developer ko control dete hain ki kaunsa update "urgent" hai aur kaunsa "background" me hona chahiye.&lt;/p&gt;
&lt;h2&gt;
  
  
  React 18 me Concurrent Mode ka implementation kaise karein?
&lt;/h2&gt;

&lt;p&gt;Chaliye, ek practical example dekhte hain. Maan lijiye hum ek search filter bana rahe hain jahan input change hote hi bahut saara data render hota hai.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState, useTransition } from 'react';

function SearchComponent() {
  const [input, setInput] = useState('');
  const [list, setList] = useState([]);
  const [isPending, startTransition] = useTransition();

  const handleChange = (e) =&amp;gt; {
    const value = e.target.value;
    setInput(value);

    // Urgent update (input field)
    // Background update (list filtering)
    startTransition(() =&amp;gt; {
      const filtered = performHeavyFiltering(value);
      setList(filtered);
    });
  };

  return (
    &amp;lt;div&amp;gt;
      &amp;lt;input type="text" value={input} onChange={handleChange} /&amp;gt;
      {isPending ? &amp;lt;p&amp;gt;Loading...&amp;lt;/p&amp;gt; : &amp;lt;ul&amp;gt;{/* Render items here */}&amp;lt;/ul&amp;gt;}
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yahan &lt;code&gt;startTransition&lt;/code&gt; ka kaam ye hai ki wo React ko batata hai ki list update hona "non-urgent" hai. Isse aapka &lt;code&gt;input&lt;/code&gt; field hamesha responsive rahega aur UI hang nahi hoga.&lt;/p&gt;

&lt;h2&gt;
  
  
  React Concurrent Mode vs Traditional Rendering
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Traditional Mode&lt;/th&gt;
&lt;th&gt;Concurrent Mode&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rendering&lt;/td&gt;
&lt;td&gt;Blocking (Synchronous)&lt;/td&gt;
&lt;td&gt;Interruptible (Asynchronous)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User Priority&lt;/td&gt;
&lt;td&gt;Low (Input lag possible)&lt;/td&gt;
&lt;td&gt;High (Seamless interaction)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;State Updates&lt;/td&gt;
&lt;td&gt;Everything is urgent&lt;/td&gt;
&lt;td&gt;Separated into urgent/transitions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  React components me performance optimization ke best practices
&lt;/h2&gt;

&lt;p&gt;Doston, Concurrent Mode magic nahi hai, ye ek tool hai. Ise sahi se use karne ke liye kuch baatein dhyan rakhein:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keep Logic Pure:&lt;/strong&gt; Rendering function pure hona chahiye kyunki React use multiple times call kar sakta hai.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avoid Side Effects during Render:&lt;/strong&gt; &lt;code&gt;useEffect&lt;/code&gt; ka use karein side effects ke liye, render cycle me nahi.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Profiler:&lt;/strong&gt; React DevTools ka use karke identify karein ki kahan performance bottleneck hai.&lt;/li&gt;
&lt;li&gt;Agar aap &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;ReactJS&lt;/a&gt; seekh rahe hain, toh samajhiye ki hooks ka sahi istemaal hi aapki app ko scale karega.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Common errors aur debugging (Fix Error)
&lt;/h2&gt;

&lt;p&gt;Kai baar developers ko "suspense" ya "concurrent mode" related &lt;code&gt;error&lt;/code&gt; face karne ko milte hain. Aam taur par ye tab hota hai jab aap async operations ko correctly handle nahi karte. Agar aapko koi &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;error&lt;/a&gt; milta hai, toh check karein ki kya aapne &lt;code&gt;ErrorBoundary&lt;/code&gt; ka use kiya hai? Suspense components ko hamesha &lt;code&gt;ErrorBoundary&lt;/code&gt; ke andar wrap karna recommended hai.&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently Asked Questions (FAQs)
&lt;/h3&gt;

&lt;p&gt;Q1: Kya Concurrent Mode ke liye code me koi bada badlav karna hoga?&lt;br&gt;
Nahi, React 18 me Concurrent Mode by default enable hota hai. Aapko sirf &lt;code&gt;startTransition&lt;/code&gt; ya &lt;code&gt;useDeferredValue&lt;/code&gt; hooks ka use karna hota hai jahan performance improve karni ho.&lt;br&gt;
Q2: Isse app ki memory consumption badhti hai?&lt;br&gt;
Concurrent mode render trees ko memory me hold karta hai, toh slight memory usage badh sakta hai, lekin UX itna better ho jata hai ki ye trade-off worth it hai.&lt;br&gt;
Q3: Kya mujhe har jagah useTransition use karna chahiye?&lt;br&gt;
Bilkul nahi! Sirf un updates ke liye use karein jo heavy hain aur jinke kaaran UI freeze ho raha hai. Normal state updates ke liye iski zaroorat nahi hai.&lt;br&gt;
Q4: Kya yeh feature &lt;a href="https://itinfohubs.blogspot.com/search/label/NextJS" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; me kaam karta hai?&lt;br&gt;
Ji haan, Next.js 13+ React 18 par hi based hai, isliye aap wahan bhi in concurrent features ka pura labh utha sakte hain.&lt;br&gt;
Q5: Concurrent Mode ko debug kaise karein?&lt;br&gt;
React DevTools ka "Profiler" tab best hai. Wahan aap dekh sakte hain ki kaunsa component render ho raha hai aur kitna samay le raha hai.&lt;/p&gt;

&lt;p&gt;Toh dosto, aaj humne seekha ki kaise React Concurrent Mode humari applications ko modern aur responsive banata hai. Ye feature sirf naya nahi hai, balki React ke kaam karne ka nazariya badal deta hai. Ise apni agali project me try zaroor karein!&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>React Suspense aur Lazy Loading Complete Guide</title>
      <dc:creator>banti kevat</dc:creator>
      <pubDate>Thu, 16 Jul 2026 10:24:53 +0000</pubDate>
      <link>https://dev.to/banti_kevat_8e2d123bb7994/react-suspense-aur-lazy-loading-complete-guide-3abn</link>
      <guid>https://dev.to/banti_kevat_8e2d123bb7994/react-suspense-aur-lazy-loading-complete-guide-3abn</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8epal28blhve00zv512k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8epal28blhve00zv512k.png" alt="React Suspense aur Lazy Loading Complete Guide (in Hindi)" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
React Suspense aur Lazy Loading complete guide: Apni web app ki performance badhayein, bundle size kam karein aur users ko lightning-fast experience dein.&lt;/p&gt;

&lt;p&gt;दोस्तों, सोचिए कि आपने बहुत मेहनत करके एक बेहतरीन, फीचर-रिच वेब एप्लीकेशन बनाई है। आपने उसमें ढेरों खूबसूरत &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;React components&lt;/a&gt;, भारी-भरकम चार्ट्स, डैशबोर्ड्स और सेटिंग्स पेज जोड़ दिए हैं। लेकिन जैसे ही आप उसे प्रोडक्शन सर्वर पर डिप्लॉय करते हैं, तो क्या होता है? पहली बार वेबसाइट लोड होने में 5 से 10 सेकंड का समय लग जाता है! यूजर चिढ़कर आपकी साइट बंद कर देता है।&lt;/p&gt;

&lt;p&gt;आखिर ऐसा क्यों हुआ? क्योंकि आपकी पूरी एप्लीकेशन का कोड कंपाइल होकर एक ही भारी-भरकम JavaScript Bundle में सिमट गया था, जिसे यूजर के ब्राउज़र को पूरा डाउनलोड करना पड़ा। इसी बड़ी समस्या का सबसे बेहतरीन और आसान समाधान है &lt;strong&gt;React Suspense और Lazy Loading&lt;/strong&gt;। चलिए, आज एक सीनियर डेवलपर की तरह बैठकर इस कॉन्सेप्ट को गहराई से समझते हैं और अपनी ऐप को सुपर-फास्ट बनाते हैं।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Quick Answer:&lt;/strong&gt; React Suspense aur Lazy Loading एक ऐसी पॉवरफुल तकनीक है जिससे हम अपनी React App के मुख्य JavaScript bundle को छोटे-छोटे टुकड़ों (chunks) में तोड़ देते हैं। React.lazy() की मदद से components को तभी लोड किया जाता है जब उनकी जरूरत होती है, और React Suspense लोडिंग के दौरान एक सुंदर Fallback UI दिखाता है।&lt;/p&gt;
&lt;h2&gt;
  
  
  React Application में Bundle Size और Slow Loading की समस्या क्या है?
&lt;/h2&gt;

&lt;p&gt;जब हम एक ट्रेडिशनल &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;ReactJS&lt;/a&gt; एप्लीकेशन बनाते हैं, तो बिल्ड प्रोसेस (जैसे Vite या Webpack) हमारे सारे कोड, फाइल्स और थर्ड-पार्टी पैकेज को मिलाकर एक ही सिंगल JavaScript File बना देती है। इसे हम "Monolithic Bundle" कहते हैं।&lt;/p&gt;

&lt;p&gt;अब मान लीजिए, एक नया यूजर आपकी वेबसाइट के सिर्फ "Landing Page" या "Home Page" पर आता है। लेकिन क्योंकि आपका बंडल सिंगल फाइल है, इसलिए यूजर का ब्राउज़र बैकग्राउंड में "Admin Dashboard", "Payment Gateway", "Analytics Graphs" और "Settings" का कोड भी डाउनलोड करने लगता है, जिसकी उसे उस समय कोई जरूरत ही नहीं थी! इससे आपका Initial Page Load Time बहुत बढ़ जाता है, खासकर कमजोर मोबाइल नेटवर्क्स पर।&lt;/p&gt;

&lt;p&gt;इसी समस्या को हल करने के लिए हम "Code Splitting" का इस्तेमाल करते हैं। कोड स्प्लिटिंग का मतलब है अपने बड़े बंडल को छोटे-छोटे हिस्सों (Chunks) में बांटना, ताकि ब्राउज़र सिर्फ उसी कोड को डाउनलोड करे जो स्क्रीन पर दिखाना जरूरी है।&lt;/p&gt;
&lt;h2&gt;
  
  
  Code Splitting कैसे काम करती है?
&lt;/h2&gt;

&lt;p&gt;नीचे दिए गए आर्किटेक्चर डायग्राम से समझिए कि नॉर्मल बंडलिंग और लेजी लोडिंग के साथ कोड स्प्लिटिंग में क्या अंतर होता है:&lt;/p&gt;

&lt;p&gt;🏗️ Code Splitting &amp;amp; Lazy Loading Flow&lt;/p&gt;

&lt;p&gt;Main App Bundle (1.5 MB)&lt;br&gt;
➔ Splits into ➔&lt;br&gt;
Home Chunk (100 KB)&lt;br&gt;
+&lt;br&gt;
Dashboard Chunk (400 KB)&lt;br&gt;
+&lt;br&gt;
Settings Chunk (200 KB)&lt;/p&gt;

&lt;p&gt;Diagram: dynamic import का उपयोग करके भारी बंडल को ऑन-डिमांड चंक्स में विभाजित करना।&lt;/p&gt;

&lt;p&gt;जब यूजर पहली बार वेबसाइट पर आएगा, तो ब्राउज़र सिर्फ &lt;code&gt;Home Chunk (100 KB)&lt;/code&gt; डाउनलोड करेगा, जिससे पेज पलक झपकते ही लोड हो जाएगा। जब यूजर 'Dashboard' बटन पर क्लिक करेगा, केवल तभी &lt;code&gt;Dashboard Chunk&lt;/code&gt; लोड होगा।&lt;/p&gt;
&lt;h2&gt;
  
  
  React.lazy और React Suspense क्या हैं?
&lt;/h2&gt;

&lt;p&gt;कोड स्प्लिटिंग को आसानी से लागू करने के लिए React हमें दो बेहतरीन टूल्स देता है: &lt;strong&gt;React.lazy&lt;/strong&gt; और &lt;strong&gt;React Suspense&lt;/strong&gt;।&lt;/p&gt;
&lt;h3&gt;
  
  
  1. React.lazy क्या है?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;React.lazy()&lt;/code&gt; एक इन-बिल्ट फंक्शन है जो हमें Dynamic Import का इस्तेमाल करके कंपोनेंट्स को आलसी (Lazy) तरीके से रेंडर करने की अनुमति देता है। यह कंपोनेंट को तभी रेंडर करता है जब उसकी सच में जरूरत होती है।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;नॉर्मल स्टेटिक इम्पोर्ट (Static Import):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import PremiumDashboard from './components/PremiumDashboard';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;लेजी डायनेमिक इम्पोर्ट (Lazy Dynamic Import):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { lazy } from 'react';
const PremiumDashboard = lazy(() =&amp;gt; import('./components/PremiumDashboard'));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. React Suspense क्या है?
&lt;/h3&gt;

&lt;p&gt;जब ब्राउज़र इंटरनेट से &lt;code&gt;PremiumDashboard&lt;/code&gt; कंपोनेंट के कोड को डाउनलोड कर रहा होगा, उस छोटे से टाइम गैप (Delay) के दौरान स्क्रीन पर क्या दिखेगा? अगर हम कुछ नहीं दिखाएंगे, तो यूजर को लगेगा कि हमारी ऐप हैंग हो गई है।&lt;/p&gt;

&lt;p&gt;यहीं पर काम आता है &lt;code&gt;Suspense&lt;/code&gt; कंपोनेंट! &lt;code&gt;Suspense&lt;/code&gt; एक ऐसा रैपर (Wrapper) है जो लेजी लोड होने वाले कंपोनेंट को घेरता है। जब तक वह कंपोनेंट बैकग्राउंड में डाउनलोड हो रहा होता है, तब तक &lt;code&gt;Suspense&lt;/code&gt; अपने &lt;code&gt;fallback&lt;/code&gt; प्रॉप में दिए गए UI (जैसे कि Loading Spinner या Skeleton Screen) को दिखाता है।&lt;/p&gt;

&lt;h2&gt;
  
  
  Static Import बनाम Lazy Import: मुख्य अंतर
&lt;/h2&gt;

&lt;p&gt;आइए इन दोनों के बीच के बड़े अंतर को एक आसान टेबल के जरिए समझते हैं:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;विशेषता (Features)&lt;/th&gt;
&lt;th&gt;Static Import (नॉर्मल)&lt;/th&gt;
&lt;th&gt;Lazy Import (Dynamic)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Loading Time&lt;/td&gt;
&lt;td&gt;शुरुआत में धीमा (Slow Initial Load)&lt;/td&gt;
&lt;td&gt;बेहद तेज (Lightning-fast Initial Load)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bundle Size&lt;/td&gt;
&lt;td&gt;एक बड़ा सिंगल बंडल (Monolithic)&lt;/td&gt;
&lt;td&gt;छोटे-छोटे कई चंक्स (Chunks)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network Requests&lt;/td&gt;
&lt;td&gt;सिर्फ एक मुख्य रिक्वेस्ट&lt;/td&gt;
&lt;td&gt;जरूरत पड़ने पर ऑन-डिमांड रिक्वेस्ट्स&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User Experience&lt;/td&gt;
&lt;td&gt;कमजोर कनेक्शन पर बुरा प्रभाव&lt;/td&gt;
&lt;td&gt;एकदम स्मूथ, बिना लैग के&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  React.lazy और Suspense का Step-by-Step Implementation
&lt;/h2&gt;

&lt;p&gt;अब थ्योरी बहुत हो गई, चलिए सीधे कोड एडिटर खोलते हैं और इसे प्रैक्टिकली करके देखते हैं। हम एक ऐसी एप्लीकेशन बनाएंगे जिसमें रूट-बेस्ड कोड स्प्लिटिंग (Route-based Code Splitting) होगी।&lt;/p&gt;

&lt;h3&gt;
  
  
  स्टेप 1: भारी-भरकम कंपोनेंट्स बनाना
&lt;/h3&gt;

&lt;p&gt;सबसे पहले हम दो कंपोनेंट्स बनाएंगे। पहला &lt;code&gt;Home.jsx&lt;/code&gt; जो तुरंत लोड होना चाहिए, और दूसरा &lt;code&gt;AnalyticsDashboard.jsx&lt;/code&gt; जो एक बड़ा कंपोनेंट है और इसे हम आलसी तरीके से लोड करेंगे।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;फाइल: &lt;code&gt;src/components/Home.jsx&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';

const Home = () =&amp;gt; {
  return (

      # स्वागत है हमारी सुपर-फास्ट वेबसाइट पर! 🚀


      यह हमारा लैंडिंग पेज है जो तुरंत बिना किसी देरी के लोड हो जाता है।



  );
};

export default Home;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;फाइल: &lt;code&gt;src/components/AnalyticsDashboard.jsx&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';

const AnalyticsDashboard = () =&amp;gt; {
  // हम मान लेते हैं कि यह कंपोनेंट बहुत भारी लाइब्रेरीज़ का इस्तेमाल करता है
  return (

      ## 📊 Analytics &amp;amp; Premium Dashboard


      यह बहुत भारी कंपोनेंट है जो बैकग्राउंड में लोड हुआ है! इसमें कई जटिल ग्राफ और चार्ट्स शामिल हैं।


      - Active Users: 14,234
- Conversion Rate: 4.8%
- Monthly Revenue: $48,900



  );
};

export default AnalyticsDashboard;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  स्टेप 2: App.jsx में Lazy Loading और Suspense सेटअप करना
&lt;/h3&gt;

&lt;p&gt;अब हम अपने मेन &lt;code&gt;App.jsx&lt;/code&gt; कंपोनेंट में इन दोनों फाइलों को डायनेमिकली इम्पोर्ट करेंगे और &lt;code&gt;Suspense&lt;/code&gt; के साथ लोड करेंगे। लोडिंग के वक्त यूजर को एक अच्छा लोडिंग एनीमेशन दिखाने के लिए हम एक साधारण Spinner कंपोनेंट भी बनाएंगे।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;फाइल: &lt;code&gt;src/App.jsx&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState, lazy, Suspense } from 'react';
import Home from './components/Home';

// AnalyticsDashboard को आलसी (Lazy) तरीके से इम्पोर्ट किया गया है
const AnalyticsDashboard = lazy(() =&amp;gt; import('./components/AnalyticsDashboard'));

// एक सुंदर लोडिंग स्पिनर कंपोनेंट
const LoadingSpinner = () =&amp;gt; (


    कृपया प्रतीक्षा करें, भारी डेटा लोड हो रहा है...


);

function App() {
  const [showDashboard, setShowDashboard] = useState(false);

  return (



       setShowDashboard(prev =&amp;gt; !prev)}
        style={{
          background: '#06b6d4',
          color: '#ffffff',
          border: 'none',
          padding: '12px 24px',
          fontSize: '16px',
          borderRadius: '6px',
          cursor: 'pointer',
          marginTop: '10px',
          fontWeight: 'bold',
          transition: 'background 0.3s'
        }}
      &amp;gt;
        {showDashboard ? 'Dashboard छुपाएं' : 'Premium Analytics Dashboard लोड करें'}


      {showDashboard &amp;amp;&amp;amp; (
        // Suspense की मदद से हम लोडिंग स्टेट को आसानी से संभालते हैं



      )}

  );
}

export default App;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ध्यान देने वाली बात ये है कि जब आप पहली बार "Premium Analytics Dashboard लोड करें" बटन पर क्लिक करेंगे, तब ब्राउज़र के Network Tab में आपको एक नया &lt;code&gt;.js&lt;/code&gt; चंक फाइल लोड होता हुआ दिखाई देगा। इसके बाद अगली बार क्लिक करने पर यह तुरंत दिखेगा क्योंकि ब्राउज़र इसे पहले ही कैशे (Cache) कर चुका होगा!&lt;/p&gt;

&lt;h2&gt;
  
  
  Edge Cases और Common Errors: इनसे कैसे बचें?
&lt;/h2&gt;

&lt;p&gt;दोस्तों, प्रोडक्शन एनवायरनमेंट में जब आप Lazy Loading का इस्तेमाल करते हैं, तो कुछ ऐसी समस्याएं आती हैं जो आपकी पूरी ऐप को क्रैश कर सकती हैं। आइए उन समस्याओं को पहचानें और उनका पक्का इलाज ढूंढें।&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Network Failure और ChunkLoadError
&lt;/h3&gt;

&lt;p&gt;मान लीजिए आपके यूजर का इंटरनेट कनेक्शन अचानक कमजोर हो गया या टूट गया जब वह किसी नए पेज या टैब पर क्लिक करता है। ऐसे में ब्राउज़र सर्वर से वह नया JavaScript चंक डाउनलोड नहीं कर पाता और रिएक्ट एक भयानक &lt;code&gt;ChunkLoadError&lt;/code&gt; फेंक देता है।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;समाधान: Error Boundary का इस्तेमाल करें!&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;हमें हमेशा अपने &lt;code&gt;Suspense&lt;/code&gt; कंपोनेंट को एक सुरक्षित घेरे में रखना चाहिए जिसे हम Error Boundary कहते हैं। अगर चंक लोड होने में कोई भी &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;error&lt;/a&gt; आती है, तो यह यूजर को क्रैश स्क्रीन दिखाने के बजाय एक साफ-सुथरा एरर मैसेज या रीलोड बटन दिखाता है।&lt;/p&gt;

&lt;p&gt;आइए एक रियलिस्टिक &lt;code&gt;ErrorBoundary.jsx&lt;/code&gt; कंपोनेंट बनाते हैं:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;फाइल: &lt;code&gt;src/components/ErrorBoundary.jsx&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';

class ErrorBoundary extends React.Component {
  constructor(props) {
    super(props);
    this.state = { hasError: false };
  }

  static getDerivedStateFromError(error) {
    // अगले रेंडर पर फॉलबैक यूआई दिखाने के लिए स्टेट अपडेट करें
    return { hasError: true };
  }

  componentDidCatch(error, errorInfo) {
    // आप यहाँ अपने एनालिटिक्स सर्विस (जैसे Sentry) पर एरर लॉग कर सकते हैं
    console.error("ErrorBoundary caught an error:", error, errorInfo);
  }

  render() {
    if (this.state.hasError) {
      return (

          ### ⚠️ नेटवर्क कनेक्शन में समस्या आ रही है!


          शायद आपका इंटरनेट धीमा है या सर्वर अपडेट हुआ है। कृपया पेज को रीफ्रेश करने का प्रयास करें।


           window.location.reload()}
            style={{
              background: '#991b1b',
              color: '#fff',
              border: 'none',
              padding: '8px 16px',
              borderRadius: '4px',
              cursor: 'pointer',
              fontWeight: 'bold'
            }}
          &amp;gt;
            पेज दोबारा लोड करें


      );
    }

    return this.props.children;
  }
}

export default ErrorBoundary;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;अब अपनी ऐप में इसका इस्तेमाल इस तरह करें:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;ErrorBoundary&amp;gt;
  &amp;lt;Suspense fallback={&amp;lt;LoadingSpinner /&amp;gt;}&amp;gt;
    &amp;lt;AnalyticsDashboard /&amp;gt;
  &amp;lt;/Suspense&amp;gt;
&amp;lt;/ErrorBoundary&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Named Exports के साथ React.lazy का काम न करना
&lt;/h3&gt;

&lt;p&gt;एक बहुत ही कॉमन गलती जो नए डेवलपर्स करते हैं, वह यह है कि वे Named Exports को &lt;code&gt;React.lazy&lt;/code&gt; के साथ लोड करने की कोशिश करते हैं।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;गलत तरीका ❌:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// यह काम नहीं करेगा अगर Dashboard.jsx में Default Export नहीं है!
const Dashboard = lazy(() =&amp;gt; import('./Dashboard'));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;सही तरीका (The Default Export Rule) :&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;&lt;code&gt;React.lazy&lt;/code&gt; केवल उन्हीं कंपोनेंट्स का समर्थन करता है जो &lt;code&gt;default export&lt;/code&gt; होते हैं। अगर आपका कंपोनेंट Named Export (जैसे &lt;code&gt;export const Dashboard = ...&lt;/code&gt;) है, तो आपको प्रॉमिस चेन में उसे डिफॉल्ट के रूप में रीजॉल्व करना होगा:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Named Export को लेजी लोड करने का नायाब नुस्खा
const Dashboard = lazy(() =&amp;gt; 
  import('./Dashboard').then(module =&amp;gt; ({ default: module.Dashboard }))
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  React Application Optimization के लिए Best Practices
&lt;/h2&gt;

&lt;p&gt;अगर आप अपनी स्केलेबल &lt;a href="https://itinfohubs.blogspot.com/search/label/MERN%20Stack" rel="noopener noreferrer"&gt;MERN Stack&lt;/a&gt; एप्लीकेशन को वर्ल्ड-क्लास परफॉरमेंस देना चाहते हैं, तो इन रणनीतियों को याद रखें:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;रूट-बेस्ड स्प्लिटिंग सबसे पहले (Route-based Splitting First):&lt;/strong&gt; अपनी पूरी एप्लीकेशन में हर कंपोनेंट को लेजी लोड करने की जरूरत नहीं है। सबसे सही तरीका यह है कि आप अपने मेन रूट्स (Pages) जैसे- Home, Dashboard, Profile, Settings को ही आलसी तरीके से इम्पोर्ट करें।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;होवर पर प्री-लोडिंग (Preloading on Hover):&lt;/strong&gt; जब यूजर किसी लिंक या बटन पर माउस होवर (Hover) करे, तो आप बैकग्राउंड में ही उस चंक को डाउनलोड करना शुरू कर सकते हैं। इससे जब यूजर क्लिक करेगा, तो उसे कोई लोडिंग स्पिनर तक नहीं देखना पड़ेगा!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server-Side Rendering (SSR) का ध्यान रखें:&lt;/strong&gt; अगर आप NextJS या किसी अन्य SSR फ्रेमवर्क का इस्तेमाल कर रहे हैं, तो ध्यान दें कि पारंपरिक &lt;code&gt;React.lazy&lt;/code&gt; और &lt;code&gt;Suspense&lt;/code&gt; को सर्वर-साइड रेंडरिंग के दौरान विशेष ध्यान की आवश्यकता होती है। &lt;a href="https://itinfohubs.blogspot.com/search/label/NextJS" rel="noopener noreferrer"&gt;NextJS&lt;/a&gt; में इसके लिए &lt;code&gt;next/dynamic&lt;/code&gt; का उपयोग किया जाता है जो कि रिएक्ट लेजी का ही एक एडवांस्ड रैपर है।&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  निष्कर्ष और महत्वपूर्ण सीख
&lt;/h2&gt;

&lt;p&gt;तो दोस्तों, आज हमने सीखा कि कैसे React Suspense और Lazy Loading हमारी वेब एप्लीकेशन के बंडल साइज को एकदम छोटा और परफॉरमेंस को सुपरफास्ट बना देते हैं। कोड स्प्लिटिंग न केवल आपके यूजर्स को एक बेहतरीन यूजर एक्सपीरियंस देती है, बल्कि आपके सर्वर के बैंडविड्थ कॉस्ट को भी काफी हद तक बचाती है।&lt;/p&gt;

&lt;p&gt;आधिकारिक डॉक्यूमेंटेशन के लिए आप &lt;a href="https://react.dev/reference/react/lazy" rel="noopener noreferrer"&gt;React official docs&lt;/a&gt; देख सकते हैं। अपनी ऐप में इसे आज ही ट्राई कीजिए और मुझे बताइए कि आपकी लोडिंग स्पीड में कितना अंतर आया!&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently Asked Questions (FAQs)
&lt;/h3&gt;

&lt;p&gt;Q1: React.lazy और React Suspense में क्या अंतर है?&lt;br&gt;
React.lazy का काम कोड को डायनेमिक रूप से विभाजित (Code Splitting) करना और ऑन-डिमांड कंपोनेंट इम्पोर्ट करना है। वहीं, React Suspense एक रैपर है जो लोडिंग की अवधि के दौरान एक वैकल्पिक फॉलबैक यूआई (जैसे प्रोग्रेस बार या स्पिनर) दिखाता है।&lt;br&gt;
Q2: क्या हमें हर एक छोटे कंपोनेंट को Lazy Load करना चाहिए?&lt;br&gt;
बिलकुल नहीं! छोटे कंपोनेंट्स को लेजी लोड करने से बहुत सारे छोटे-छोटे नेटवर्क रिक्वेस्ट्स जेनरेट होंगे, जिससे परफॉरमेंस सुधरने की बजाय बिगड़ जाएगी। हमेशा केवल बड़े रूट्स (Pages) और भारी लाइब्रेरीज वाले कंपोनेंट्स को ही लेजी लोड करें।&lt;br&gt;
Q3: React.lazy के इस्तेमाल पर एरर क्यों आता है और इसे कैसे ठीक करें?&lt;br&gt;
यह एरर आमतौर पर दो वजहों से आता है: पहला, आपका कंपोनेंट 'Default Export' नहीं है, या दूसरा, नेटवर्क कनेक्शन फेल हो जाने के कारण ब्राउज़र चंक लोड नहीं कर पाया। इसे ठीक करने के लिए एरर बाउंड्री (Error Boundary) और डिफ़ॉल्ट एक्सपोर्ट का उपयोग करें।&lt;br&gt;
Q4: क्या React Suspense सर्वर साइड रेंडरिंग (SSR) के साथ काम करता है?&lt;br&gt;
React 18 से Suspense सर्वर पर आंशिक रूप से स्ट्रीमिंग और सिलेक्टिव हाइड्रेशन का समर्थन करता है। हालांकि, अगर आप Next.js का उपयोग कर रहे हैं, तो अधिक अनुकूलित और सुरक्षित लोडिंग के लिए 'next/dynamic' का उपयोग करने की सलाह दी जाती है।&lt;br&gt;
Q5: Dynamic Imports से हमारी एप्लीकेशन की SEO रैंकिंग पर क्या असर पड़ता है?&lt;br&gt;
डायनेमिक इम्पोर्ट्स से पेज लोडिंग स्पीड बहुत बढ़ जाती है। क्योंकि Google Core Web Vitals (विशेषकर LCP - Largest Contentful Paint) को रैंकिंग फैक्टर मानता है, इसलिए लेजी लोडिंग अप्रत्यक्ष रूप से आपके SEO को काफी हद तक सुधारती है।&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>React Portals Use Cases Modals aur Tooltips</title>
      <dc:creator>banti kevat</dc:creator>
      <pubDate>Thu, 16 Jul 2026 06:02:56 +0000</pubDate>
      <link>https://dev.to/banti_kevat_8e2d123bb7994/react-portals-use-cases-modals-aur-tooltips-37ch</link>
      <guid>https://dev.to/banti_kevat_8e2d123bb7994/react-portals-use-cases-modals-aur-tooltips-37ch</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw316sxhmhghszk1topuh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw316sxhmhghszk1topuh.png" alt="React Portals Use Cases Modals aur Tooltips (in Hindi)" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
React Portals in Hindi: Modals aur Tooltips banane ke liye DOM hierarchy ko bypass karne ka sahi tarika aur complete code examples ke saath samjhein.&lt;/p&gt;

&lt;p&gt;तो दोस्तों, क्या आपके साथ कभी ऐसा हुआ है कि आपने बहुत मेहनत से एक सुंदर सा Modal या Tooltip बनाया, लेकिन जैसे ही उसे open किया, वो CSS के &lt;code&gt;overflow: hidden&lt;/code&gt; या &lt;code&gt;z-index&lt;/code&gt; के मकड़जाल में फंसकर आधा कट गया? या फिर पैरेंट डिब (Parent Div) की styling की वजह से उसकी position ही बिगड़ गई? यह एक ऐसा सिरदर्द है जिससे हर &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;ReactJS&lt;/a&gt; डेवलपर कभी न कभी जरूर परेशान होता है।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Quick Answer:&lt;/strong&gt; React Portals एक ऐसी feature है जो हमें किसी भी React component को उसके normal parent DOM hierarchy से बाहर, DOM में किसी भी अन्य जगह (जैसे &lt;code&gt;document.body&lt;/code&gt; या किसी custom div) पर render करने की आजादी देती है, बिना React component tree के logical state और event system को प्रभावित किए।&lt;/p&gt;
&lt;h2&gt;
  
  
  React Portals क्या है और इसकी जरूरत क्यों पड़ती है?
&lt;/h2&gt;

&lt;p&gt;आमतौर पर जब हम &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;React components&lt;/a&gt; बनाते हैं, तो वे एक nested tree structure का पालन करते हैं। इसका मतलब है कि अगर Component B, Component A के अंदर है, तो HTML DOM में भी Component B का Element, Component A के DOM Node के अंदर ही render होगा।&lt;/p&gt;

&lt;p&gt;लेकिन ज़रा सोचिए, Modals, Tooltips, Custom Dropdowns, और Loaders जैसी UI elements के मामले में यह behavior मुसीबत बन जाता है। मान लीजिए आपके पास एक Sidebar component है जिसमें &lt;code&gt;overflow: hidden&lt;/code&gt; लगा हुआ है। अब अगर आप इस Sidebar के अंदर एक Tooltip render करेंगे, तो वो Tooltip Sidebar की boundary के बाहर निकलते ही छिप (hide) जाएगा।&lt;/p&gt;

&lt;p&gt;यहीं पर काम आता है &lt;strong&gt;React Portals&lt;/strong&gt;। यह हमें एक "पोर्टल" या जादुई रास्ता देता है जिसके जरिए हम component को लिखते तो उसी nested structure के अंदर हैं (ताकि React state और props आसानी से pass हो सकें), लेकिन असल में HTML DOM में वह component उड़कर किसी दूसरी जगह (जैसे &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; के direct child के रूप में) जाकर render हो जाता है।&lt;/p&gt;

&lt;p&gt;🏗️ React Portal DOM Flow Diagram&lt;/p&gt;

&lt;p&gt;#root (Main App)&lt;br&gt;
→&lt;br&gt;
Nested Sidebar (Overflow Hidden)&lt;br&gt;
⚡ Portal&lt;br&gt;
#portal-root (Modal/Tooltip)&lt;/p&gt;

&lt;p&gt;Diagram: React Portal components render outside the parent root div directly into a dedicated DOM node.&lt;/p&gt;
&lt;h2&gt;
  
  
  createPortal API का Syntax क्या है?
&lt;/h2&gt;

&lt;p&gt;React Portals का इस्तेमाल करने के लिए हमें &lt;code&gt;react-dom&lt;/code&gt; package से &lt;code&gt;createPortal&lt;/code&gt; function को import करना होता है। इसका syntax बहुत ही सरल और सीधा है:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import ReactDOM from 'react-dom';

ReactDOM.createPortal(child, container);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;चैंपियन, यहाँ इन दो parameters का मतलब समझो:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;child:&lt;/strong&gt; यह कोई भी renderable React component, element, string, या fragment हो सकता है जिसे आप render करना चाहते हैं।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;container:&lt;/strong&gt; यह वह HTML DOM element है जहाँ आप उस child को भेजना चाहते हैं (जैसे: &lt;code&gt;document.getElementById('portal-root')&lt;/code&gt;)।&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  React Portals vs Normal Components में क्या अंतर है?
&lt;/h2&gt;

&lt;p&gt;कई बार लोग सोचते हैं कि हम normal rendering से भी तो काम चला सकते हैं, फिर इसकी क्या जरूरत? चलिए इस comparison table से असली फर्क को समझते हैं:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature / Property&lt;/th&gt;
&lt;th&gt;Normal Components Rendering&lt;/th&gt;
&lt;th&gt;React Portals Rendering&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DOM Positioning&lt;/td&gt;
&lt;td&gt;Parent element के अंदर ही nested render होता है।&lt;/td&gt;
&lt;td&gt;Parent tree से बाहर किसी भी DOM node में render हो सकता है।&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSS Styling Constraints&lt;/td&gt;
&lt;td&gt;Parent के &lt;code&gt;overflow&lt;/code&gt;, &lt;code&gt;z-index&lt;/code&gt;, और &lt;code&gt;position&lt;/code&gt; से प्रभावित होता है।&lt;/td&gt;
&lt;td&gt;Parent CSS rules से बिल्कुल आजाद होता है।&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Event Bubbling&lt;/td&gt;
&lt;td&gt;Normal React event hierarchy के अनुसार bubble करता है।&lt;/td&gt;
&lt;td&gt;DOM में बाहर होने के बावजूद, React Virtual DOM tree के अनुसार bubble करता है।&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best Use Case&lt;/td&gt;
&lt;td&gt;Standard layout components (Headers, Cards, Buttons).&lt;/td&gt;
&lt;td&gt;Global overlay components (Modals, Tooltips, Popovers).&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  React Portals की मदद से Modal Component कैसे बनाएं?
&lt;/h2&gt;

&lt;p&gt;चलिए, अब सीधे काम की बात पर आते हैं और एक real-world, production-ready Modal component बनाते हैं। हम इसे step-by-step समझेंगे ताकि कोई भी कन्फ्यूजन न रहे।&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: HTML File में Portal Target Element जोड़ें
&lt;/h3&gt;

&lt;p&gt;सबसे पहले हमें अपने React project की main HTML file (आमतौर पर Vite प्रोजेक्ट्स में &lt;code&gt;index.html&lt;/code&gt; या Public folder में) में जाना होगा और &lt;code&gt;&amp;lt;div id="root"&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt; के ठीक नीचे एक नया div element जोड़ना होगा:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- index.html --&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8" /&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&amp;gt;
    &amp;lt;title&amp;gt;React Portals Demo&amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;div id="root"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;!-- Portal Target Node --&amp;gt;
    &amp;lt;div id="portal-root"&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Modal Component का Code लिखें
&lt;/h3&gt;

&lt;p&gt;अब हम एक &lt;code&gt;Modal.jsx&lt;/code&gt; फ़ाइल बनाएंगे। ध्यान देने वाली बात ये है कि हम यहाँ clean CSS styles भी inline या stylesheet के रूप में handle करेंगे ताकि यह बाहर क्लिक होने पर बंद हो सके, और escape key दबाने पर भी close हो सके (जो कि accessibility के लिए बहुत जरूरी है)।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useEffect } from 'react';
import ReactDOM from 'react-dom';

const Modal = ({ isOpen, onClose, title, children }) =&amp;gt; {
  // Escape key दबाने पर modal बंद करने के लिए useEffect hook
  useEffect(() =&amp;gt; {
    const handleKeyDown = (event) =&amp;gt; {
      if (event.key === 'Escape') {
        onClose();
      }
    };

    if (isOpen) {
      document.body.style.overflow = 'hidden'; // Screen scroll block handle karein
      window.addEventListener('keydown', handleKeyDown);
    }

    return () =&amp;gt; {
      document.body.style.overflow = 'unset';
      window.removeEventListener('keydown', handleKeyDown);
    };
  }, [isOpen, onClose]);

  // Agar modal open nahi hai to kuch render na karein
  if (!isOpen) return null;

  // Modal target node ko select karein
  const portalNode = document.getElementById('portal-root');
  if (!portalNode) return null;

  // CSS Styles in Object
  const backdropStyle = {
    position: 'fixed',
    top: 0,
    left: 0,
    right: 0,
    bottom: 0,
    backgroundColor: 'rgba(0, 0, 0, 0.7)',
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center',
    zIndex: 1000,
  };

  const modalStyle = {
    background: '#ffffff',
    padding: '24px',
    borderRadius: '12px',
    maxWidth: '500px',
    width: '90%',
    boxShadow: '0 10px 25px rgba(0,0,0,0.2)',
    position: 'relative',
  };

  const closeBtnStyle = {
    position: 'absolute',
    top: '15px',
    right: '15px',
    background: 'none',
    border: 'none',
    fontSize: '20px',
    cursor: 'pointer',
    color: '#64748b',
  };

  return ReactDOM.createPortal(
    &amp;lt;div style={backdropStyle} onClick={onClose}&amp;gt;
      &amp;lt;div style={modalStyle} onClick={(e) =&amp;gt; e.stopPropagation()}&amp;gt;
        &amp;lt;button style={closeBtnStyle} onClick={onClose}&amp;gt;&amp;amp;times;&amp;lt;/button&amp;gt;
        &amp;lt;h3 style={{ marginTop: 0, color: '#1e293b' }}&amp;gt;{title}&amp;lt;/h3&amp;gt;
        &amp;lt;div style={{ color: '#475569', lineHeight: '1.6' }}&amp;gt;
          {children}
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;,
    portalNode
  );
};

export default Modal;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: App.jsx में Modal को Use करना
&lt;/h3&gt;

&lt;p&gt;अब अपने main container component में इस Modal को import करते हैं और state के जरिए control करते हैं:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState } from 'react';
import Modal from './Modal';

function App() {
  const [isModalOpen, setIsModalOpen] = useState(false);

  return (
    &amp;lt;div style={{ padding: '40px', fontFamily: 'sans-serif', textAlign: 'center' }}&amp;gt;
      &amp;lt;h1&amp;gt;React Portals Modal Tutorial&amp;lt;/h1&amp;gt;
      &amp;lt;p&amp;gt;यह बटन दबाकर देखें कि कैसे modal direct body tag ke niche render hota hai.&amp;lt;/p&amp;gt;

      &amp;lt;button 
        onClick={() =&amp;gt; setIsModalOpen(true)}
        style={{
          padding: '12px 24px',
          fontSize: '16px',
          backgroundColor: '#2563eb',
          color: '#fff',
          border: 'none',
          borderRadius: '8px',
          cursor: 'pointer',
          fontWeight: '600'
        }}
      &amp;gt;
        Open Magic Modal
      &amp;lt;/button&amp;gt;

      &amp;lt;Modal 
        isOpen={isModalOpen} 
        onClose={() =&amp;gt; setIsModalOpen(false)} 
        title="बधाई हो, पोर्टल काम कर रहा है!"
      &amp;gt;
        &amp;lt;p&amp;gt;दोस्तों, यह modal HTML DOM में "#root" div के बाहर "portal-root" में render हो रहा है, लेकिन React Component Tree में यह अभी भी App component का ही हिस्सा है।&amp;lt;/p&amp;gt;
      &amp;lt;/Modal&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

export default App;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  React Portals का use करके Tooltip कैसे बनाएं?
&lt;/h2&gt;

&lt;p&gt;Modals के बाद, Tooltips दूसरी सबसे बड़ी चुनौती होती हैं। मान लीजिए आपके पास एक card layout है जिसका overflow dynamic है। वहाँ standard tooltips कट जाते हैं। चलिए, React Portal का use करके एक positioning-aware Tooltip बनाते हैं।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState, useRef } from 'react';
import ReactDOM from 'react-dom';

const Tooltip = ({ text, children }) =&amp;gt; {
  const [show, setShow] = useState(false);
  const [coords, setCoords] = useState({ top: 0, left: 0 });
  const triggerRef = useRef(null);

  const handleMouseEnter = () =&amp;gt; {
    if (triggerRef.current) {
      const rect = triggerRef.current.getBoundingClientRect();
      // Tooltip position setup (Element ke thik upar center me)
      setCoords({
        top: rect.top + window.scrollY - 40,
        left: rect.left + window.scrollX + rect.width / 2,
      });
      setShow(true);
    }
  };

  const handleMouseLeave = () =&amp;gt; {
    setShow(false);
  };

  const tooltipStyle = {
    position: 'absolute',
    top: `${coords.top}px`,
    left: `${coords.left}px`,
    transform: 'translateX(-50%)',
    backgroundColor: '#1e293b',
    color: '#ffffff',
    padding: '6px 12px',
    borderRadius: '6px',
    fontSize: '12px',
    whiteSpace: 'nowrap',
    pointerEvents: 'none',
    zIndex: 9999,
    boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',
  };

  return (
    &amp;lt;span 
      ref={triggerRef} 
      onMouseEnter={handleMouseEnter} 
      onMouseLeave={handleMouseLeave}
      style={{ display: 'inline-block', cursor: 'pointer', textDecoration: 'underline' }}
    &amp;gt;
      {children}
      {show &amp;amp;&amp;amp; ReactDOM.createPortal(
        &amp;lt;div style={tooltipStyle}&amp;gt;
          {text}
        &amp;lt;/div&amp;gt;,
        document.body
      )}
    &amp;lt;/span&amp;gt;
  );
};

export default Tooltip;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;देखा आपने? हमने Tooltip को &lt;code&gt;document.body&lt;/code&gt; में सीधे render किया है ताकि CSS layout rules उस पर हावी न हो सकें।&lt;/p&gt;

&lt;h2&gt;
  
  
  React Portals का use करते समय Event Bubbling कैसे काम करती है?
&lt;/h2&gt;

&lt;p&gt;अब आप सोच रहे होंगे, "भाई, अगर DOM node बिल्कुल अलग जगह पर है, तो Event Bubbling कैसे काम करेगी? क्या child button पर click करने से parent element का click handler trigger होगा?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;हाँ, बिल्कुल होगा!&lt;/strong&gt; और यही React की सबसे बड़ी खूबसूरती है।&lt;/p&gt;

&lt;p&gt;भले ही Portal का DOM Node आपके main root tree से बाहर कहीं भी हो, React के perspective से यह अभी भी उसी React Component Tree का हिस्सा है। इसलिए React Event System (SyntheticEvents) वैसे ही काम करता है जैसे वो normal nested layout में करता।&lt;/p&gt;

&lt;p&gt;इसे समझने के लिए इस मजेदार उदाहरण को देखें:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState } from 'react';
import ReactDOM from 'react-dom';

function ParentComponent() {
  const [clickCount, setClickCount] = useState(0);

  // Yeh click handler Portal child par click hone par bhi trigger hoga!
  const handleParentClick = () =&amp;gt; {
    setClickCount((prev) =&amp;gt; prev + 1);
  };

  return (
    &amp;lt;div 
      onClick={handleParentClick} 
      style={{ padding: '20px', border: '2px dashed #a855f7', background: '#faf5ff' }}
    &amp;gt;
      &amp;lt;h3&amp;gt;Parent Component (Clicks: {clickCount})&amp;lt;/h3&amp;gt;
      &amp;lt;p&amp;gt;Portal child par click karne se bhi yeh count badhega, kyunki React Event Bubbling normal rehti hai!&amp;lt;/p&amp;gt;

      &amp;lt;PortalChild /&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

function PortalChild() {
  const portalTarget = document.getElementById('portal-root') || document.body;

  return ReactDOM.createPortal(
    &amp;lt;div style={{ 
      background: '#10b981', 
      color: 'white', 
      padding: '12px', 
      marginTop: '20px',
      borderRadius: '6px' 
    }}&amp;gt;
      &amp;lt;p&amp;gt;Main Portal Node ke andar hoon, par Parent standard element me bubble up karega.&amp;lt;/p&amp;gt;
      &amp;lt;button style={{ padding: '6px 12px', cursor: 'pointer' }}&amp;gt;Click Me&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;,
    portalTarget
  );
}

export default ParentComponent;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;अगर आप चाहते हैं कि Portal element का click event parent तक न पहुँचे, तो आपको child layout के handler में &lt;code&gt;e.stopPropagation()&lt;/code&gt; का use करना होगा, जैसा हमने ऊपर Modal Component वाले code में किया है।&lt;/p&gt;

&lt;h2&gt;
  
  
  React Portals use करते समय Common Errors और उन्हें कैसे Solve करें?
&lt;/h2&gt;

&lt;p&gt;काम करते वक्त &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;error&lt;/a&gt; आना तो तय है, लेकिन घबराइए मत! यहाँ कुछ आम गलतियाँ और उनके solutions दिए गए हैं:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. "Target container is not a DOM element" Error
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;वजह:&lt;/strong&gt; यह &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;exception&lt;/a&gt; तब आता है जब React, DOM render करने की कोशिश करता है लेकिन उसे &lt;code&gt;document.getElementById('portal-root')&lt;/code&gt; जैसी specific node मिलती ही नहीं (शायद spelling mistake हो या element load न हुआ हो)।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; हमेशा double check करें कि आपकी &lt;code&gt;index.html&lt;/code&gt; फ़ाइल में वह element exist करता हो। इसके अलावा, SSR frameworks (जैसे &lt;a href="https://itinfohubs.blogspot.com/search/label/NextJS" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt;) में rendering से पहले client-side check जरूर लगाएं:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [mounted, setMounted] = useState(false);
useEffect(() =&amp;gt; {
  setMounted(true);
  return () =&amp;gt; setMounted(false);
}, []);

if (!mounted) return null;
return ReactDOM.createPortal(&amp;lt;Child /&amp;gt;, document.getElementById('portal-root'));

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Dynamic Mount / Cleanup issue
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;वजह:&lt;/strong&gt; अगर आप dynamically element create करके portal attach कर रहे हैं और component unmount होने पर उसे clean नहीं कर रहे हैं, तो memory leak हो सकता है।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; &lt;code&gt;useEffect&lt;/code&gt; में dynamic divs को clean करना सीखें। clean-up function में container को &lt;code&gt;document.body.removeChild(el)&lt;/code&gt; के जरिए clear करें।&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices और Performance Tips क्या हैं?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility (A11y) का ध्यान रखें:&lt;/strong&gt; जब भी Modal open हो, screen readers के लिए parent element को hide (&lt;code&gt;aria-hidden="true"&lt;/code&gt;) करें और keyboard focus को Modal के अंदर ही lock (Focus Trap) करें। इसके लिए आप &lt;a href="https://react.dev/" rel="noopener noreferrer"&gt;React Official Docs&lt;/a&gt; के guidelines का पालन कर सकते हैं।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSR compatibility:&lt;/strong&gt; Server-side rendering में document element server पर available नहीं होता। इसलिए ऊपर बताए गए &lt;code&gt;mounted&lt;/code&gt; state approach का इस्तेमाल करें ताकि build fail न हो।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Z-Index Management:&lt;/strong&gt; Portal nodes के लिए CSS में एक standard stack बनाएं (जैसे Modals के लिए &lt;code&gt;z-index: 1000&lt;/code&gt;, tooltips के लिए &lt;code&gt;1100&lt;/code&gt;) ताकि UI overlap control में रहे।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;तो दोस्तों, हमने आज सीखा कि कैसे React Portals बड़े ही जादुई ढंग से DOM hierarchy को तोड़कर हमारे Modals और Tooltips को position-independent और flexible बनाते हैं। अगली बार जब CSS overflow या z-index आपके design को बिगाड़ने की कोशिश करे, तो बिना झिझक React Portals का इस्तेमाल करें और इस समस्या को जड़ से खत्म करें।&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently Asked Questions (FAQs)
&lt;/h3&gt;

&lt;p&gt;Q1: React Portals का use कब करना चाहिए?&lt;br&gt;
जब भी आपको ऐसा UI element बनाना हो जो parent CSS wrapper styles (जैसे overflow: hidden, relative width, ya z-index limits) से बाहर निकलकर स्क्रीन पर दिखे, जैसे Modals, Popovers, Tooltips, Global Loaders, और Side-drawers.&lt;br&gt;
Q2: क्या React Portal use करने से event listeners काम करना बंद कर देते हैं?&lt;br&gt;
बिल्कुल नहीं! React Synthetic Event system, React virtual component tree के design पर काम करता है, न कि real DOM architecture पर। इसलिए Portal node पर होने वाले events भी parent level पर bubble up होते हैं।&lt;br&gt;
Q3: React Portals और standard components में से performance के लिहाज से कौन सा बेहतर है?&lt;br&gt;
दोनों की performance में कोई खास अंतर नहीं होता है। React Portals सिर्फ insertion target बदलते हैं, rendering cycle और updates सामान्य components की तरह ही fast और optimized रहते हैं।&lt;br&gt;
Q4: क्या Next.js या Server-Side Rendering (SSR) में React Portals काम करते हैं?&lt;br&gt;
हाँ, वे काम करते हैं। लेकिन क्योंकि server पर 'window' या 'document' object accessible नहीं होता, आपको Client Side mount check (useEffect) का इस्तेमाल करके ensure करना होगा कि Portal सिर्फ client browser पर ही execute हो।&lt;br&gt;
Q5: क्या हम एक React Component में multiple portals का इस्तेमाल कर सकते हैं?&lt;br&gt;
हाँ, आप एक ही component में या पूरी application में जितने चाहें उतने Portals का use कर सकते हैं। ये सभी अलग-अलग target containers में render किए जा सकते हैं।&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>React Portals Kya Hain aur Kaise Use Karein</title>
      <dc:creator>banti kevat</dc:creator>
      <pubDate>Wed, 15 Jul 2026 12:51:52 +0000</pubDate>
      <link>https://dev.to/banti_kevat_8e2d123bb7994/react-portals-kya-hain-aur-kaise-use-karein-5b41</link>
      <guid>https://dev.to/banti_kevat_8e2d123bb7994/react-portals-kya-hain-aur-kaise-use-karein-5b41</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmx58ru2mrh9sxr5m1y3b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmx58ru2mrh9sxr5m1y3b.png" alt="React Portals Kya Hain aur Kaise Use Karein (in Hindi)" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
React Portals kya hain aur inhe modal, tooltip ke liye kaise use karein? Is Hindi guide me code examples ke sath step-by-step seekhein!&lt;/p&gt;

&lt;p&gt;हैलो दोस्तों! जब हम &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;ReactJS&lt;/a&gt; में काम करते हैं, तो कभी-न-कभी हमारे सामने एक ऐसी सिचुएशन ज़रूर आती है जहाँ CSS की वजह से हमारी रातों की नींद उड़ जाती है। मान लीजिए आप एक बहुत ही ख़ूबसूरत Modal, Dropdown, या Tooltip बना रहे हैं। सब कुछ बढ़िया चल रहा है, लेकिन अचानक आप देखते हैं कि आपका Modal अपने Parent Component के &lt;code&gt;overflow: hidden&lt;/code&gt; या &lt;code&gt;z-index&lt;/code&gt; की वजह से आधा कट रहा है या स्क्रीन के पीछे छिप रहा है।&lt;/p&gt;

&lt;p&gt;आप CSS की प्रॉपर्टीज़ बदलते हैं, सर खुजलाते हैं, लेकिन बात नहीं बनती। ऐसे ही समय पर React के डेवलपर्स ने हमारे लिए एक जादुई दरवाज़ा खोला था, जिसे हम &lt;strong&gt;React Portals&lt;/strong&gt; कहते हैं। चलिए, आज चाय की चुस्की के साथ बिल्कुल आसान भाषा में समझते हैं कि यह React Portals आखिर क्या बला है और इसे प्रोडक्शन-रेडी कोड में कैसे इस्तेमाल किया जाता है।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Quick Answer:&lt;/strong&gt; React Portals ReactJS ka ek unique feature hain jo components ko HTML DOM hierarchy ke bahar kisi bhi doosre DOM node me render karne ki azadi deta hai. Iska primary use modals, tooltips aur dropdowns banane me hota hai taaki overflow aur z-index stacking issues ko aasani se solve kiya ja sake.&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  React Portals क्या हैं (What are React Portals)?
&lt;/h2&gt;

&lt;p&gt;साधारण शब्दों में कहें तो, &lt;strong&gt;React Portals&lt;/strong&gt; हमें अपने &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;React components&lt;/a&gt; को उनके Default Parent DOM Tree से बाहर निकालकर, DOM (Document Object Model) के किसी भी दूसरे हिस्से में Render करने की सुविधा देते हैं।&lt;/p&gt;

&lt;p&gt;आमतौर पर, जब आप React में कोई Component रेंडर करते हैं, तो वह अपने Parent Component के अंदर ही एक Nested Child बनकर HTML में दिखाई देता है। लेकिन Portal का इस्तेमाल करके, आप उस Component को React Component Tree में तो उसी जगह रख सकते हैं (जिससे State और Context का एक्सेस बना रहे), लेकिन HTML structure में उसे किसी बिल्कुल अलग जगह पर भेज सकते हैं (जैसे कि सीधे &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; के नीचे)।&lt;/p&gt;

&lt;p&gt;इसके बारे में अधिक विस्तार से जानने के लिए आप &lt;a href="https://react.dev/reference/react-dom/createPortal" rel="noopener noreferrer"&gt;React Portal Official Documentation&lt;/a&gt; भी पढ़ सकते हैं।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  React Portals की ज़रूरत क्यों पड़ती है (Why do we need them)?
&lt;/h2&gt;

&lt;p&gt;दोस्तों, इसे समझने के लिए एक क्लासिक वेब डिज़ाइनिंग की प्रॉब्लम को देखते हैं। मान लीजिए आपके पास एक Sidebar component है जिसकी CSS कुछ इस तरह है:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.sidebar {
  width: 250px;
  position: relative;
  overflow: hidden; /* यहाँ असली विलेन छुपा है! */
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;अब इस Sidebar के अंदर आपने एक &lt;code&gt;&amp;lt;ProfileTooltip /&amp;gt;&lt;/code&gt; component डाला है। जैसे ही यूजर प्रोफाइल पर होवर करता है, आप चाहते हैं कि Tooltip साइडबार से बाहर निकलकर स्क्रीन पर दिखे। लेकिन चूंकि Sidebar पर &lt;code&gt;overflow: hidden&lt;/code&gt; लगा हुआ है, आपका Tooltip साइडबार की सीमाओं (borders) के अंदर ही कट जाएगा!&lt;/p&gt;

&lt;p&gt;यही नहीं, कई बार &lt;code&gt;z-index&lt;/code&gt; का ऐसा झंझट खड़ा होता है कि लाख कोशिशों के बाद भी आपका Modal बैकड्रॉप (overlay) के पीछे ही रह जाता है। इन सभी समस्याओं का एकमात्र और सबसे साफ़-सुथरा समाधान है React Portals। यह आपके Element को उठाकर सीधे Root DOM के समानांतर (parallel) खड़ा कर देता है, जिससे सारे CSS constraints खत्म हो जाते हैं।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  React Portals कैसे काम करते हैं (How do they work)?
&lt;/h2&gt;

&lt;p&gt;React Portals के पीछे का आर्किटेक्चर बहुत ही दिलचस्प है। यह React की वर्चुअल ट्री (React Tree) और असली ब्राउज़र ट्री (HTML DOM Tree) के बीच एक ब्रिज की तरह काम करता है। &lt;/p&gt;

&lt;p&gt;🏗️ React Portals DOM Flow Architecture&lt;/p&gt;

&lt;p&gt;App Root (#root)&lt;br&gt;
 Standard React Tree&lt;/p&gt;

&lt;p&gt;⇢ (React Portal)&lt;/p&gt;

&lt;p&gt;Portal Node (#portal-root)&lt;br&gt;
 Rendered Outside Parent CSS&lt;/p&gt;

&lt;p&gt;Diagram: component logic stays in App Tree, but HTML renders in #portal-root node.&lt;/p&gt;

&lt;p&gt;ध्यान देने वाली बात ये है कि भले ही आपका Component फिजिकल DOM में कहीं भी रेंडर हो रहा हो, वह React Tree के अंदर अपने पेरेंट के साथ ही जुड़ा रहता है। इसका मतलब है कि React Context API, custom hooks, और State Props वैसे ही काम करेंगे जैसे वे नॉर्मल Components के लिए करते हैं।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  React Portals vs Normal Rendering में क्या अंतर है?
&lt;/h2&gt;

&lt;p&gt;चलिए इन दोनों के अंतर को एक बार साफ़-साफ़ कंपैरिजन टेबल से समझ लेते हैं ताकि कोई कन्फ़्यूजन न रहे:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;फ़ीचर / अंतर&lt;/th&gt;
&lt;th&gt;Normal Rendering&lt;/th&gt;
&lt;th&gt;React Portals&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DOM Insertion&lt;/td&gt;
&lt;td&gt;Parent Component के अंदर ही nested होता है।&lt;/td&gt;
&lt;td&gt;Target DOM Node (जैसे &lt;code&gt;body&lt;/code&gt;) में बाहर रेंडर होता है।&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSS Isolation&lt;/td&gt;
&lt;td&gt;Parent के &lt;code&gt;overflow&lt;/code&gt; और &lt;code&gt;z-index&lt;/code&gt; से प्रभावित होता है।&lt;/td&gt;
&lt;td&gt;Parent के CSS रूल्स से पूरी तरह आज़ाद रहता है।&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Event Bubbling&lt;/td&gt;
&lt;td&gt;नॉर्मल DOM के अनुसार ऊपर की तरफ बबल करता है।&lt;/td&gt;
&lt;td&gt;React Tree के अनुसार ही बबल करता है, भले ही DOM स्ट्रक्चर अलग हो।&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best Used For&lt;/td&gt;
&lt;td&gt;Regular UI Layouts (Buttons, Inputs, Cards).&lt;/td&gt;
&lt;td&gt;Modals, Tooltips, Global Popups, Dropdowns.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;---&lt;/p&gt;
&lt;h2&gt;
  
  
  React Portals को Step-by-Step कैसे implement करें (With Code)?
&lt;/h2&gt;

&lt;p&gt;अब कोडिंग का समय आ गया है! हम एक पूरी तरह से फंक्शनल, रेस्पॉन्सिव और खूबसूरत Modal Component बनाएंगे जो React Portals का इस्तेमाल करेगा। &lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1: HTML फ़ाइल में Target Node बनाना
&lt;/h3&gt;

&lt;p&gt;सबसे पहले, हमें अपने React App की मुख्य HTML फ़ाइल (आमतौर पर &lt;code&gt;public/index.html&lt;/code&gt; या Vite प्रोजेक्ट्स में &lt;code&gt;index.html&lt;/code&gt;) को खोलना है और वहाँ हमारे React Root Div के बिल्कुल नीचे एक नया Anchor Container बनाना है।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8" /&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&amp;gt;
    &amp;lt;title&amp;gt;React Portal Modal Demo&amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;

    &amp;lt;div id="root"&amp;gt;&amp;lt;/div&amp;gt;


    &amp;lt;div id="portal-root"&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: ReactDOM createPortal का Syntax समझना
&lt;/h3&gt;

&lt;p&gt;React Portals बनाने के लिए हम &lt;code&gt;react-dom&lt;/code&gt; पैकेज से &lt;code&gt;createPortal&lt;/code&gt; मेथड का उपयोग करते हैं। इसका बेसिक सिंटैक्स कुछ ऐसा होता है:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import ReactDOM from 'react-dom';

ReactDOM.createPortal(child, containerInstance);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;child&lt;/code&gt;: कोई भी रेंडर करने योग्य React Child (जैसे JSX, Element, Component, String या Array)।&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;containerInstance&lt;/code&gt;: वह असली DOM एलिमेंट जहाँ आप इस Child को पहुँचाना चाहते हैं (जैसे &lt;code&gt;document.getElementById('portal-root')&lt;/code&gt;)।&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: reusable Modal Component बनाना
&lt;/h3&gt;

&lt;p&gt;अब हम अपना &lt;code&gt;Modal.jsx&lt;/code&gt; कंपोनेंट तैयार करेंगे। ध्यान दें कि हम इसे पूरी तरह से सेफ बनाने के लिए कुछ चेक भी लगाएंगे ताकि सर्वर-साइड रेंडरिंग (SSR) के समय कोई &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;error&lt;/a&gt; न आए।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useEffect } from 'react';
import ReactDOM from 'react-dom';

// Modal component styles in JS for clean demo
const BACKDROP_STYLES = {
  position: 'fixed',
  top: 0,
  left: 0,
  right: 0,
  bottom: 0,
  backgroundColor: 'rgba(0, 0, 0, 0.7)',
  display: 'flex',
  justifyContent: 'center',
  alignItems: 'center',
  zIndex: 1000,
};

const MODAL_STYLES = {
  background: '#ffffff',
  padding: '30px',
  borderRadius: '12px',
  boxShadow: '0 10px 25px rgba(0, 0, 0, 0.2)',
  maxWidth: '500px',
  width: '90%',
  zIndex: 1001,
  fontFamily: 'sans-serif',
};

const CLOSE_BUTTON_STYLES = {
  marginTop: '20px',
  padding: '10px 20px',
  border: 'none',
  background: '#ef4444',
  color: 'white',
  borderRadius: '6px',
  cursor: 'pointer',
  fontWeight: 'bold',
};

export default function Modal({ isOpen, onClose, children }) {
  // अगर modal ओपन नहीं है, तो कुछ भी रेंडर न करें
  if (!isOpen) return null;

  // React Portals को 'portal-root' div में माउंट करें
  const portalNode = document.getElementById('portal-root');

  if (!portalNode) {
    console.error("The element #portal-root was not found in the DOM.");
    return null;
  }

  return ReactDOM.createPortal(
    &amp;lt;div style={BACKDROP_STYLES} onClick={onClose}&amp;gt;
      &amp;lt;div style={MODAL_STYLES} onClick={(e) =&amp;gt; e.stopPropagation()}&amp;gt;
        &amp;lt;div&amp;gt;{children}&amp;lt;/div&amp;gt;
        &amp;lt;button style={CLOSE_BUTTON_STYLES} onClick={onClose}&amp;gt;
          Close Modal
        &amp;lt;/button&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;,
    portalNode
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: App Component में Modal का उपयोग करना
&lt;/h3&gt;

&lt;p&gt;अब हमारे मुख्य App Component में हम इस Modal को कॉल करेंगे और इसकी Open/Close state को हैंडल करेंगे।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState } from 'react';
import Modal from './Modal';

export default function App() {
  const [isModalOpen, setIsModalOpen] = useState(false);

  const containerStyle = {
    padding: '40px',
    textAlign: 'center',
    fontFamily: 'sans-serif',
  };

  const buttonStyle = {
    padding: '12px 24px',
    fontSize: '16px',
    backgroundColor: '#3b82f6',
    color: '#fff',
    border: 'none',
    borderRadius: '8px',
    cursor: 'pointer',
    transition: 'background-color 0.2s',
  };

  return (
    &amp;lt;div style={containerStyle}&amp;gt;
      &amp;lt;h1&amp;gt;React Portals Live Demo&amp;lt;/h1&amp;gt;
      &amp;lt;p&amp;gt;यह बटन दबाकर देखें कि कैसे पोर्टल की मदद से मॉडल सीधे बॉडी के नीचे रेंडर होता है!&amp;lt;/p&amp;gt;

      &amp;lt;button 
        style={buttonStyle} 
        onClick={() =&amp;gt; setIsModalOpen(true)}
      &amp;gt;
        Open Beautiful Modal
      &amp;lt;/button&amp;gt;

      &amp;lt;Modal isOpen={isModalOpen} onClose={() =&amp;gt; setIsModalOpen(false)}&amp;gt;
        &amp;lt;h2 style={{ marginTop: 0, color: '#1e293b' }}&amp;gt;बधाई हो! 🎉&amp;lt;/h2&amp;gt;
        &amp;lt;p style={{ color: '#64748b', lineHeight: '1.6' }}&amp;gt;
          यह मॉडल DOM ट्री के अंदर &amp;lt;code&amp;gt;#portal-root&amp;lt;/code&amp;gt; में मौजूद है, न कि &amp;lt;code&amp;gt;#root&amp;lt;/code&amp;gt; में! 
          इस कारण इसपर पेरेंट के CSS रूल्स और लिमिटेशन्स का कोई असर नहीं पड़ेगा।
        &amp;lt;/p&amp;gt;
      &amp;lt;/Modal&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  React Portals Event Bubbling: ध्यान देने योग्य खास बात!
&lt;/h2&gt;

&lt;p&gt;अब एक बहुत ही महत्वपूर्ण बात जिसे जानना हर सीनियर डेवलपर के लिए आवश्यक है। इंटरव्यू में अक्सर यह सवाल पूछा जाता है: &lt;em&gt;"अगर कोई Component Portal के माध्यम से DOM में कहीं दूर रेंडर हुआ है, तो क्या उसके Events पेरेंट Component तक बबल करेंगे?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;जवाब है: हाँ, बिल्कुल करेंगे!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;भले ही पोर्टल द्वारा रेंडर किया गया Element फिजिकल HTML DOM में कहीं भी हो, वह React के Virtual DOM Hierarchy में उसी जगह रहता है जहाँ उसे कोड में लिखा गया है। इसलिए, जब भी कोई Event (जैसे &lt;code&gt;click&lt;/code&gt;, &lt;code&gt;keydown&lt;/code&gt;) पोर्टल के अंदर ट्रिगर होता है, तो वह React Component Tree के अनुसार ही बबल (Bubble) करके ऊपर जाएगा।&lt;/p&gt;

&lt;p&gt;उदाहरण के लिए, ऊपर दिए गए कोड में अगर हमारे &lt;code&gt;&amp;lt;App /&amp;gt;&lt;/code&gt; component के ऊपर कोई &lt;code&gt;onClick&lt;/code&gt; लिसनर लगा होता, तो जब आप Modal के अंदर किसी चीज़ पर क्लिक करते, तो वह क्लिक इवेंट भी &lt;code&gt;App&lt;/code&gt; के लिसनर को ट्रिगर कर देता। यदि आप इसे रोकना चाहते हैं, तो आपको चाइल्ड एलिमेंट पर &lt;code&gt;e.stopPropagation()&lt;/code&gt; का इस्तेमाल करना पड़ेगा, जैसा कि हमने ऊपर कोड में किया है।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  React Portals का Use करते वक्त कौन-सी Common Errors आती हैं?
&lt;/h2&gt;

&lt;p&gt;जब भी डेवलपर्स नए-नए Portals का उपयोग करना शुरू करते हैं, तो वे कुछ ऐसी गलतियाँ कर बैठते हैं जिससे एप्लीकेशन क्रैश हो जाती है या अजीब बिहेवियर शो करती है। चलिए उन्हें समझकर &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;fix error&lt;/a&gt; करने के तरीके सीख लेते हैं:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. "Target container is not a DOM element" Error
&lt;/h3&gt;

&lt;p&gt;यह एरर तब आती है जब React आपके स्पेसिफाइड DOM node (जैसे &lt;code&gt;#portal-root&lt;/code&gt;) को ढूँढ नहीं पाता। ऐसा अक्सर तब होता है जब:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;आपने &lt;code&gt;index.html&lt;/code&gt; में वह div बनाना भूल गए हैं।&lt;/li&gt;
&lt;li&gt;आपका कोड सर्वर पर रेंडर (Next.js / SSR) हो रहा है जहाँ &lt;code&gt;document&lt;/code&gt; ऑब्जेक्ट उपलब्ध नहीं होता।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;सोल्यूशन:&lt;/strong&gt; सर्वर साइड रेंडरिंग के समय हमेशा चेक करें कि &lt;code&gt;document&lt;/code&gt; मौजूद है या नहीं। आप इसके लिए &lt;code&gt;useEffect&lt;/code&gt; या &lt;code&gt;useState&lt;/code&gt; का इस्तेमाल कर सकते हैं, जिससे पोर्टल सिर्फ क्लाइंट-साइड पर ही रेंडर हो:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { useEffect, useState } from 'react';

const [mounted, setMounted] = useState(false);

useEffect(() =&amp;gt; {
  setMounted(true);
  return () =&amp;gt; setMounted(false);
}, []);

if (!mounted) return null;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Accessibility (a11y) की समस्या
&lt;/h3&gt;

&lt;p&gt;चूंकि आप अपने एलिमेंट को फिजिकली स्क्रीन के किसी दूसरे कोने में फेंक रहे हैं, कीबोर्ड से नेविगेट करने वाले यूज़र्स (जैसे Tab की का इस्तेमाल करने वाले) के लिए फ़ोकस मैनेजमेंट बिगड़ सकता है।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;सोल्यूशन:&lt;/strong&gt; हमेशा ध्यान रखें कि जब Modal ओपन हो, तो फ़ोकस Modal के पहले एलिमेंट पर चला जाए, और बंद होने पर वापस उसी बटन पर आए जिसने इसे खोला था। आप इसके लिए &lt;code&gt;focus\-trap\&lt;/code&gt; लाइब्रेरी का इस्तेमाल भी कर सकते हैं।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices: प्रदर्शन और मापनीयता (Performance &amp;amp; Scalability)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Cleanups का हमेशा ध्यान रखें:&lt;/strong&gt; अगर आप डायनामिकली कोई नया DOM Node बनाकर पोर्टल अटैच कर रहे हैं, तो Component के Unmount होते समय उस Node को DOM से रिमूव ज़रूर करें ताकि मेमोरी लीक न हो।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic HTML का पालन करें:&lt;/strong&gt; पोर्टल के अंदर रेंडर होने वाले मॉड्यूल्स को हमेशा सही HTML टैग्स (जैसे &lt;code&gt;&amp;lt;dialog&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;aside&amp;gt;&lt;/code&gt;) के साथ रैप करें ताकि स्क्रीन रीडर्स उन्हें आसानी से पहचान सकें।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling Modular रखें:&lt;/strong&gt; चूंकि पोर्टल्स ग्लोबल स्कोप में जाते हैं, उनके क्लास नेम्स बहुत ही स्पेसिफिक रखें ताकि ग्लोबल स्टाइलिंग क्लैश न हो। CSS Modules या Styled Components इसके लिए सबसे बेहतरीन विकल्प हैं।&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;h2&gt;
  
  
  तो दोस्तों, आज हमने क्या सीखा?
&lt;/h2&gt;

&lt;p&gt;आज की इस डिटेल्ड चर्चा में हमने सीखा कि React Portals किस तरह मुश्किल से मुश्किल CSS ओवरफ़्लो और लेआउट प्रॉब्लम्स को चुटकियों में हल कर देते हैं। हमने देखा कि React Tree के अंदर लॉजिकल पैरेंटिंग बरकरार रखते हुए भी हम HTML DOM स्ट्रक्चर में अपनी मनपसंद जगह पर डेटा कैसे रेंडर कर सकते हैं। यह न सिर्फ आपके कोड को क्लीन और मेंटनेबल बनाता है, बल्कि बड़ी एप्लिकेशन्स को स्केल करने में भी बहुत मदद करता है।&lt;/p&gt;

&lt;p&gt;अब समय आ गया है कि आप अपने पुराने प्रोजेक्ट्स को खोलें और जहाँ भी आपने जुगाड़ लगाकर CSS के ज़रिए मोडल्स संभाले थे, उन्हें React Portals के साथ रिप्लेस करें! कोडिंग करते रहिए, सीखते रहिए और कोई भी डाउट हो तो बेझिझक पूछिए!&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently Asked Questions (FAQs)
&lt;/h3&gt;

&lt;p&gt;Q1: React Portals और CSS position absolute/fixed में क्या अंतर है?&lt;br&gt;
CSS fixed/absolute पोजीशन सिर्फ विज़ुअल लेआउट बदलती हैं, लेकिन यदि पैरेंट एलिमेंट पर &lt;code&gt;overflow: hidden\&lt;/code&gt; लगा हो, तो वे एलिमेंट अभी भी कट जाते हैं। React Portals एलिमेंट को सीधे फिजिकल DOM के दूसरे नोड में भेज देते हैं जिससे इस तरह की सभी CSS लिमिटेशन्स पूरी तरह खत्म हो जाती हैं।&lt;br&gt;
Q2: क्या React Portals में React Context और Redux Store का एक्सेस मिलता है?&lt;br&gt;
हाँ, बिल्कुल मिलता है! भले ही पोर्टल के ज़रिए एलिमेंट DOM में अलग जगह रेंडर होते हैं, लेकिन React Component Tree में वे अपनी मूल जगह पर ही रहते हैं। इसलिए, पेरेंट प्रोवाइडर के Context, State और Props उन्हें नॉर्मल तरीके से मिलते रहते हैं।&lt;br&gt;
Q3: Next.js (SSR) में React Portals का उपयोग करते समय "document is not defined" एरर क्यों आती है?&lt;br&gt;
यह एरर इसलिए आती है क्योंकि Next.js कोड को पहले सर्वर पर रेंडर करता है जहाँ &lt;code&gt;window\&lt;/code&gt; या &lt;code&gt;document\&lt;/code&gt; ऑब्जेक्ट मौजूद नहीं होता। इसे सॉल्व करने के लिए आपको यह सुनिश्चित करना होगा कि पोर्टल केवल तभी रेंडर हो जब कंपोनेंट क्लाइंट-साइड पर माउंट (useEffect के ज़रिए) हो चुका हो।&lt;br&gt;
Q4: क्या एक ही React App में मल्टीपल Portals का यूज़ किया जा सकता है?&lt;br&gt;
हाँ, आप एक ही एप्लीकेशन में और यहाँ तक कि एक ही पेज पर जितने चाहें उतने Portals का उपयोग कर सकते हैं। आप उन्हें &lt;code&gt;document.body\&lt;/code&gt; या अलग-अलग custom divs में जहाँ चाहें माउंट करा सकते हैं।&lt;br&gt;
Q5: क्या React Portals का इस्तेमाल परफॉर्मेंस को धीमा करता है?&lt;br&gt;
बिल्कुल नहीं! React Portals रिएक्ट के कोर इंजन का ही एक हिस्सा हैं जो अत्यधिक ऑप्टिमाइज़्ड है। इनका इस्तेमाल करने से कोई अतिरिक्त ओवरहेड नहीं होता, बल्कि यह आपके UI रेंडरिंग और CSS पेंटिंग परफॉर्मेंस को बेहतर ही बनाता है।&lt;/p&gt;

&lt;p&gt;---&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>React Error Boundaries Kaise Banayein</title>
      <dc:creator>banti kevat</dc:creator>
      <pubDate>Wed, 15 Jul 2026 10:19:44 +0000</pubDate>
      <link>https://dev.to/banti_kevat_8e2d123bb7994/react-error-boundaries-kaise-banayein-18ao</link>
      <guid>https://dev.to/banti_kevat_8e2d123bb7994/react-error-boundaries-kaise-banayein-18ao</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyesh0nqc4al3xb483ash.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyesh0nqc4al3xb483ash.png" alt="React Error Boundaries Kaise Banayein (in Hindi)" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
React Error Boundaries kaise banayein? Is complete Hindi guide me seekhein components ko crash hone se bachana aur robust production apps banana.&lt;/p&gt;

&lt;p&gt;सोचिए, आपने हफ़्तों की मेहनत के बाद एक बेहतरीन वेब एप्लीकेशन बनाई। यूजर बड़े चाव से आपकी ऐप का इस्तेमाल कर रहा है, तभी अचानक डेटाबेस से कोई अजीब रिस्पांस आता है, या फिर किसी छोटे से कंपोनेंट में कोई अनचाहा अनहैंडल्ड एरर आ जाता है। नतीजा? पूरी की पूरी स्क्रीन गायब, और यूजर के सामने आ जाता है एक सूना, सफेद पन्ना—जिसे हम डेवलपर की दुनिया में &lt;strong&gt;White Screen of Death&lt;/strong&gt; कहते हैं।&lt;/p&gt;

&lt;p&gt;यह किसी भी यूजर एक्सपीरियंस के लिए एक दुःस्वप्न (nightmare) जैसा है। एक प्रोफेशनल डेवलपर के रूप में, हमारी जिम्मेदारी सिर्फ कोड लिखना नहीं है, बल्कि उस कोड को सुरक्षित और सहनशील (fault-tolerant) बनाना भी है। यहीं पर एंट्री होती है &lt;strong&gt;React Error Boundaries&lt;/strong&gt; की। तो मेरे भाई, आज इस इन-डेप्थ गाइड में हम और आप मिलकर सीखेंगे कि कैसे हम अपनी ऐप को इस भयंकर क्रैश से बचा सकते हैं और कैसे एक सुंदर Fallback UI दिखा सकते हैं।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Quick Answer:&lt;/strong&gt; React Error Boundaries class components होते हैं जो अपने child component tree में आने वाले किसी भी runtime JavaScript error को कैच (catch) करते हैं। यह पूरी ऐप को क्रैश होने से बचाकर एक सुंदर Fallback UI दिखाते हैं और एरर को लॉग भी करते हैं।&lt;/p&gt;
&lt;h2&gt;
  
  
  React Error Boundaries क्या हैं और इनकी जरूरत क्यों है?
&lt;/h2&gt;

&lt;p&gt;सरल शब्दों में कहें तो, &lt;strong&gt;React Error Boundary&lt;/strong&gt; एक सुरक्षा कवच की तरह है। React 16 के बाद से, कोर टीम ने एक बड़ा बदलाव किया। यदि आपके किसी कंपोनेंट के अंदर रेंडरिंग के दौरान कोई JavaScript एरर आता है और आपने उसे हैंडल नहीं किया है, तो React पूरी की पूरी UI ट्री को अनमाउंट (unmount) कर देता है। यानी, एक छोटी सी गलती के कारण आपका पूरा &lt;a href="https://itinfohubs.blogspot.com/search/label/MERN%20Stack" rel="noopener noreferrer"&gt;MERN Stack&lt;/a&gt; प्रोजेक्ट या React App ठप हो जाता है।&lt;/p&gt;

&lt;p&gt;इसी समस्या को हल करने के लिए React हमें एक स्पेशल क्लास कंपोनेंट बनाने की सुविधा देता है जो अपने नीचे के सभी &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;React components&lt;/a&gt; में आने वाले एरर्स को सोख (absorb) लेता है। ध्यान देने वाली बात ये है कि यह सिर्फ अपने &lt;strong&gt;children components&lt;/strong&gt; के एरर्स को पकड़ता है, खुद के एरर को नहीं।&lt;/p&gt;

&lt;p&gt;🏗️ Error Boundary Flow Diagram&lt;/p&gt;

&lt;p&gt;Component Error&lt;br&gt;
→&lt;br&gt;
Error Boundary&lt;br&gt;
→&lt;br&gt;
Fallback UI (Safe App)&lt;/p&gt;

&lt;p&gt;Diagram: How React Error Boundary prevents app crash and shows safe UI.&lt;/p&gt;
&lt;h2&gt;
  
  
  React Error Boundaries vs Try-Catch Block: दोनों में क्या अंतर है?
&lt;/h2&gt;

&lt;p&gt;अक्सर नए डेवलपर्स के मन में यह सवाल जरूर आता है कि "अरे भाई, जब हमारे पास पहले से ही जावास्क्रिप्ट का पुराना और भरोसेमंद &lt;code&gt;try-catch&lt;/code&gt; ब्लॉक है, तो हमें इस नए कॉन्सेप्ट की क्या आवश्यकता है?"&lt;/p&gt;

&lt;p&gt;यह बहुत ही जायज सवाल है। चलिए इसे एक साफ-सुथरी टेबल के जरिए समझते हैं ताकि आपके दिमाग में कोई भी कन्फ्यूजन न रहे:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature / Parameter&lt;/th&gt;
&lt;th&gt;Try-Catch Block&lt;/th&gt;
&lt;th&gt;React Error Boundary&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Work Domain&lt;/td&gt;
&lt;td&gt;यह Imperative Code (जैसे फंक्शन्स, इवेंट हैंडल्स) पर काम करता है।&lt;/td&gt;
&lt;td&gt;यह Declarative Code (JSX, रेंडरिंग और लाइफसाइकिल मेथड्स) पर काम करता है।&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Component Tree Scope&lt;/td&gt;
&lt;td&gt;यह पूरे कंपोनेंट ट्री के रेंडरिंग एरर्स को कैच नहीं कर सकता।&lt;/td&gt;
&lt;td&gt;यह अपने नीचे के पूरे सब-ट्री (Sub-tree) के किसी भी कंपोनेंट के एरर को कैच कर सकता है।&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fallback UI rendering&lt;/td&gt;
&lt;td&gt;JSX के बीच में सीधे UI रेंडर करने में असमर्थ है।&lt;/td&gt;
&lt;td&gt;कस्टम Fallback UI को बहुत ही आसानी से स्क्रीन पर रेंडर कर देता है।&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Async Error Support&lt;/td&gt;
&lt;td&gt;यह एसिंक्रोनस कोड (setTimeout, API call) में अच्छा काम करता है।&lt;/td&gt;
&lt;td&gt;यह रेंडरिंग और लाइफसाइकिल मेथड्स के एरर्स पर ही काम करता है (एसिंक्रोनस पर नहीं)।&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;तो आसान शब्दों में, &lt;code&gt;try-catch&lt;/code&gt; कोड के अंदर के लॉजिक को सुरक्षित रखने के लिए है, और &lt;strong&gt;Error Boundary&lt;/strong&gt; आपकी यूजर इंटरफेस (UI) को सुरक्षित रखने के लिए है।&lt;/p&gt;
&lt;h2&gt;
  
  
  React Error Boundary के लाइफसाइकिल मेथड्स (Lifecycle Methods)
&lt;/h2&gt;

&lt;p&gt;React में एरर बाउंड्री बनाने के लिए हमें क्लास कंपोनेंट का इस्तेमाल करना पड़ता है क्योंकि इसके दो खास लाइफसाइकिल मेथड्स केवल क्लास कंपोनेंट में ही उपलब्ध हैं। अभी तक functional components में इन मेथड्स का कोई सीधा हुक (Hook) विकल्प नहीं आया है।&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;static getDerivedStateFromError(error)&lt;/code&gt;:&lt;/strong&gt; यह एक static मेथड है। जब भी किसी चाइल्ड कंपोनेंट में कोई &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;error&lt;/a&gt; थ्रो होता है, तो रेंडर फेज के दौरान यह मेथड सबसे पहले कॉल होता है। इसका मुख्य काम होता है स्टेट को अपडेट करना (जैसे &lt;code&gt;hasError: true&lt;/code&gt; करना) ताकि हम स्क्रीन पर Fallback UI दिखा सकें।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;componentDidCatch(error, errorInfo)&lt;/code&gt;:&lt;/strong&gt; यह मेथड कमिट फेज (Commit Phase) के दौरान कॉल होता है। इसका उपयोग एरर की पूरी जानकारी को किसी थर्ड-पार्टी लॉगिंग सर्विस (जैसे Sentry, LogRocket, या आपके खुद के कस्टम सर्वर) पर भेजने के लिए किया जाता है।&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step-by-Step: कस्टम React Error Boundary कंपोनेंट कैसे बनाएं?
&lt;/h2&gt;

&lt;p&gt;चलिए, अब सीधे काम की बात पर आते हैं और अपना खुद का एक कस्टम, रीयूजेबल और बेहद मजबूत &lt;code&gt;ErrorBoundary&lt;/code&gt; कंपोनेंट तैयार करते हैं। नीचे दिए गए कोड को ध्यान से देखें।&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1: ErrorBoundary.jsx फ़ाइल बनाना
&lt;/h3&gt;

&lt;p&gt;सबसे पहले अपने प्रोजेक्ट के अंदर &lt;code&gt;ErrorBoundary.jsx&lt;/code&gt; नाम की एक फ़ाइल बनाइए और उसमें नीचे दिया गया पूरा कोड लिख दीजिए:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { Component } from 'react';

class ErrorBoundary extends Component {
  constructor(props) {
    super(props);
    // इनिशियल स्टेट सेट करें जहाँ हैस-एरर फ़ॉल्स हो
    this.state = { hasError: false, error: null };
  }

  // एरर आने पर स्टेट को अपडेट करने के लिए इस मेथड का उपयोग करें
  static getDerivedStateFromError(error) {
    return { hasError: true, error: error };
  }

  // एरर रिपोर्टिंग सर्विस पर एरर भेजने के लिए इस मेथड का उपयोग करें
  componentDidCatch(error, errorInfo) {
    console.error("Error Boundary caught an error:", error, errorInfo);
    // यहाँ आप Sentry या किसी भी API पर एरर लॉग्स भेज सकते हैं
  }

  // यूजर को एरर से रिकवर करने के लिए रीसेट हैंडलर
  handleReset = () =&amp;gt; {
    this.setState({ hasError: false, error: null });
  };

  render() {
    if (this.state.hasError) {
      // यदि props में कोई कस्टम Fallback UI दिया है, तो उसे दिखाएं, अन्यथा डिफ़ॉल्ट UI दिखाएं
      if (this.props.fallback) {
        return this.props.fallback;
      }

      return (

          ## ओह! कुछ गलत हो गया।



            चिंता न करें, हमारे डेवलपर्स को इसकी सूचना दे दी गई है।




&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        {this.state.error &amp;amp;&amp;amp; this.state.error.toString()}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

            फिर से कोशिश करें


      );
    }

    // अगर कोई एरर नहीं है, तो नॉर्मल चिल्ड्रेन रेंडर करें
    return this.props.children;
  }
}

export default ErrorBoundary;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: एक ऐसा कंपोनेंट बनाना जो जानबूझकर एरर उत्पन्न करे
&lt;/h3&gt;

&lt;p&gt;अब हमें टेस्ट करने के लिए एक ऐसा कंपोनेंट चाहिए जो किसी गड़बड़ी के कारण क्रैश हो जाए। इसके लिए हम एक &lt;code&gt;UserProfile.jsx&lt;/code&gt; कंपोनेंट बनाते हैं:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState } from 'react';

function UserProfile() {
  const [user, setUser] = useState({ name: "अमित कुमार" });

  const triggerError = () =&amp;gt; {
    // जानबूझकर स्टेट को null कर रहे हैं ताकि रेंडरिंग के समय ऑब्जेक्ट प्रॉपर्टी एक्सेस एरर आये
    setUser(null);
  };

  if (!user) {
    throw new Error("User data is completely missing!");
  }

  return (

      ### यूजर प्रोफाइल कंपोनेंट


      नाम: {user.name}



        क्रैश कंपोनेंट (Throw Error)


  );
}

export default UserProfile;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: App.jsx में Error Boundary को लपेटना (Wrap Components)
&lt;/h3&gt;

&lt;p&gt;अब हमारा मुख्य काम आता है। हमें अपने संदेहास्पद कंपोनेंट को इस एरर बाउंड्री से सुरक्षित करना है। इसके लिए हम अपने &lt;code&gt;App.jsx&lt;/code&gt; में इस तरह रैप करेंगे:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import ErrorBoundary from './ErrorBoundary';
import UserProfile from './UserProfile';

function App() {
  return (

      # React Error Boundary डेमो में आपका स्वागत है


      नीचे दी गई बाउंड्री हमारी ऐप को क्रैश होने से बचाएगी।



      {/* हमने UserProfile को ErrorBoundary के अंदर रैप कर दिया है */}





        ### सुरक्षित एरिया


        यह हिस्सा कभी भी क्रैश नहीं होगा क्योंकि एरर केवल ऊपर वाले कंपोनेंट के दायरे तक ही सीमित है।




  );
}

export default App;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;जब आप "क्रैश कंपोनेंट" बटन पर क्लिक करेंगे, तो आप देखेंगे कि आपका "सुरक्षित एरिया" बिल्कुल वैसे ही काम कर रहा है, और केवल प्रोफाइल वाला कंपोनेंट सुंदर लाल रंग के एरर बॉक्स में बदल गया है। यही तो जादू है React Error Boundaries का!&lt;/p&gt;

&lt;h2&gt;
  
  
  React Error Boundaries किन Errors को कैच नहीं कर पाते?
&lt;/h2&gt;

&lt;p&gt;मेरे प्यारे दोस्तों, यहाँ पर एक बहुत ही महत्वपूर्ण बात है जिसपर अक्सर इंटरव्यू में भी सवाल पूछे जाते हैं। Error Boundaries कोई जादू की छड़ी नहीं हैं जो हर प्रकार के &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;error&lt;/a&gt; को पकड़ लें। आधिकारिक &lt;a href="https://legacy.reactjs.org/docs/error-boundaries.html" rel="noopener noreferrer"&gt;React Official Documentation&lt;/a&gt; के अनुसार, निम्नलिखित स्थितियों में ये काम नहीं करते हैं:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Event Handlers (इवेंट हैंडलर):&lt;/strong&gt; अगर आपके बटन के &lt;code&gt;onClick&lt;/code&gt; फंक्शन के अंदर कोई एरर आता है, तो Error Boundary उसे नहीं पकड़ेगी। इवेंट हैंडलर रेंडर फेज के बाहर चलते हैं।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Asynchronous Code (एसिंक्रोनस कोड):&lt;/strong&gt; &lt;code&gt;setTimeout&lt;/code&gt;, &lt;code&gt;requestAnimationFrame&lt;/code&gt;, या API के लिए &lt;code&gt;fetch&lt;/code&gt; रिक्वेस्ट के अंदर होने वाले एरर्स को ये कैच नहीं कर सकते।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server Side Rendering (SSR):&lt;/strong&gt; सर्वर पर रेंडर होते समय आने वाले एरर्स पर यह काम नहीं करता।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;खुद के एरर (Self Errors):&lt;/strong&gt; यदि एरर खुद एरर बाउंड्री कंपोनेंट के अंदर (उसके रेंडर मेथड में) आता है, तो वह उसे हैंडल नहीं कर पाएगा।&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  इवेंट हैंडलर्स और एसिंक्रोनस कोड के एरर्स को कैसे हैंडल करें?
&lt;/h3&gt;

&lt;p&gt;इसके लिए आपको सामान्य &lt;code&gt;try-catch&lt;/code&gt; ब्लॉक का ही उपयोग करना होगा। उदाहरण के तौर पर:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const handleClick = () =&amp;gt; {
  try {
    // कोई ऐसा काम जिससे एरर आ सकता है
    performCriticalOperation();
  } catch (error) {
    // स्टेट सेट करके UI को सूचित करें
    setErrorState(error);
  }
};

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  प्रोजेक्ट्स के लिए 'react-error-boundary' लाइब्रेरी का उपयोग कैसे करें?
&lt;/h2&gt;

&lt;p&gt;अगर आप खुद क्लास कंपोनेंट नहीं बनाना चाहते और बिल्कुल मॉडर्न, हुक-आधारित (Hook-based) और क्लीन कोड लिखना पसंद करते हैं, तो React कम्युनिटी की सबसे लोकप्रिय लाइब्रेरी &lt;code&gt;react-error-boundary&lt;/code&gt; आपके लिए ही बनी है।&lt;/p&gt;

&lt;p&gt;सबसे पहले इसे अपने प्रोजेक्ट में इनस्टॉल करें:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install react-error-boundary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;इसके बाद, आप बहुत ही आसानी से फंक्शनल कंपोनेंट्स में इसका इस्तेमाल कर सकते हैं। चलिए इसका एक प्रोडक्शन-रेडी उदाहरण देखते हैं:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import { ErrorBoundary } from 'react-error-boundary';

// 1. कस्टम फॉलबैक कंपोनेंट बनाएं
function ErrorFallback({ error, resetErrorBoundary }) {
  return (

      ### सिस्टम में कुछ गड़बड़ हुई है!



&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;{error.message}&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

        फिर से प्रयास करें


  );
}

// 2. मुख्य कंपोनेंट जहाँ हम इसे रैप करेंगे
function AppWithLibrary() {
  return (
     {
        // यहाँ आप स्टेट रीसेट करने का लॉजिक लिख सकते हैं
        console.log("ErrorBoundary successfully reset!");
      }}
    &amp;gt;


  );
}

export default AppWithLibrary;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  React Apps में Error Boundaries लगाने के Best Practices
&lt;/h2&gt;

&lt;p&gt;एक अनुभवी डेवलपर की तरह सोचते हुए, अपनी एप्लीकेशन के आर्किटेक्चर को बेहतर बनाने के लिए इन बेस्ट प्रैक्टिसेज का ध्यान जरूर रखें:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;सही जगह पर रैप करें (Granular Placement):&lt;/strong&gt; पूरी की पूरी ऐप को केवल एक ही ग्लोबल एरर बाउंड्री में न लपेटें। ऐसा करने से अगर हेडर में छोटा सा एरर आएगा तो पूरी स्क्रीन गायब हो जाएगी। इसके बजाय, अलग-अलग सेक्शन्स जैसे कि &lt;code&gt;Sidebar&lt;/code&gt;, &lt;code&gt;Feed&lt;/code&gt;, और &lt;code&gt;CommentSection&lt;/code&gt; को अलग-अलग एरर बाउंड्रीज में रैप करें।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;एरर लॉगिंग (Error Logging):&lt;/strong&gt; हमेशा अपने &lt;code&gt;componentDidCatch&lt;/code&gt; का इस्तेमाल करके एरर को मॉनिटरिंग टूल्स (जैसे Sentry या LogRocket) पर भेजें। इससे आपको बिना यूजर के बताए ही पता चल जाएगा कि प्रोडक्शन पर क्या फट रहा है।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;सार्थक फॉलबैक UI (Graceful Degradation):&lt;/strong&gt; यूजर को डरावने कोडिंग शब्द दिखाने के बजाय एक दोस्ताना संदेश और 'Retry' बटन दें।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;तो दोस्तों, आज हमने यह गहराई से सीखा कि कैसे React Error Boundaries का सही उपयोग करके हम अपनी React एप्लीकेशन को अत्यधिक मजबूत और यूजर-फ्रेंडली बना सकते हैं। अब व्हाइट स्क्रीन ऑफ डेथ को हमेशा के लिए बाय-बाय कहने का समय आ चुका है! अपने प्रोजेक्ट्स में इसे आज ही लागू करें और यूजर एक्सपीरियंस को नेक्स्ट लेवल पर ले जाएं। कोडिंग करते रहिए और मुस्कुराते रहिए!&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently Asked Questions (FAQs)
&lt;/h3&gt;

&lt;p&gt;Q1: क्या हम Functional Components में Error Boundary बना सकते हैं?&lt;br&gt;
नहीं, सीधे तौर पर नहीं। React में एरर कैच करने वाले लाइफसाइकिल मेथड्स (getDerivedStateFromError और componentDidCatch) केवल Class Components में ही उपलब्ध हैं। हालाँकि, आप 'react-error-boundary' जैसी थर्ड-पार्टी लाइब्रेरी का उपयोग करके फंक्शनल स्टाइल में काम कर सकते हैं।&lt;br&gt;
Q2: क्या Error Boundary बच्चों के अलावा खुद के एरर को कैच कर सकती है?&lt;br&gt;
नहीं, Error Boundary केवल अपने नीचे मौजूद चाइल्ड कंपोनेंट्स के एरर्स को ही कैच करती है। यदि खुद एरर बाउंड्री कंपोनेंट के अंदर रेंडरिंग में कोई गड़बड़ होती है, तो वह एरर ऊपर की तरफ ट्रांसफर हो जाता है।&lt;br&gt;
Q3: क्या हमें पूरी ऐप को एक ही Error Boundary से रैप करना चाहिए?&lt;br&gt;
नहीं, यह एक खराब प्रैक्टिस है। आपको अपनी ऐप के विभिन्न हिस्सों (जैसे साइडबार, चैट बॉक्स, डैशबोर्ड विजेट्स) को अलग-अलग एरर बाउंड्री से रैप करना चाहिए ताकि एक हिस्से का एरर पूरी ऐप को प्रभावित न करे।&lt;br&gt;
Q4: क्या Error Boundary एपीआई कॉल (Fetch/Axios) के एरर को हैंडल करती है?&lt;br&gt;
नहीं। एरर बाउंड्री रेंडरिंग फेज, लाइफसाइकिल मेथड्स और कंस्ट्रक्टर के एरर्स को कैच करती है। एपीआई कॉल जैसे एसिंक्रोनस एरर्स को आपको कंपोनेंट के अंदर सामान्य try-catch ब्लॉक से ही हैंडल करना पड़ेगा।&lt;br&gt;
Q5: Error Boundary में componentDidCatch का मुख्य उद्देश्य क्या है?&lt;br&gt;
componentDidCatch का मुख्य काम एरर रिपोर्टिंग है। जब भी कोई अनपेक्षित एरर आता है, तो हम इस मेथड के जरिए उस एरर के स्टैक ट्रेस को Sentry या अपने कस्टम लॉगिंग सर्वर पर एनालिसिस के लिए भेजते हैं।&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>React Render Props Pattern Kya Hai</title>
      <dc:creator>banti kevat</dc:creator>
      <pubDate>Wed, 15 Jul 2026 05:56:22 +0000</pubDate>
      <link>https://dev.to/banti_kevat_8e2d123bb7994/react-render-props-pattern-kya-hai-3a45</link>
      <guid>https://dev.to/banti_kevat_8e2d123bb7994/react-render-props-pattern-kya-hai-3a45</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flu04fks0wgp80lz7yde8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flu04fks0wgp80lz7yde8.png" alt="React Render Props Pattern Kya Hai (in Hindi)"&gt;&lt;/a&gt;&lt;br&gt;
React Render Props Pattern क्या है और इसे code reusability के लिए कैसे use करें? इस detailed Hindi guide में complete steps और examples के साथ सीखें।&lt;/p&gt;

&lt;p&gt;दोस्तों, क्या आपके साथ कभी ऐसा हुआ है कि आप &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;ReactJS&lt;/a&gt; में दो अलग-अलग components बना रहे हों, और अचानक आपको एहसास हो कि दोनों Components का state logic बिल्कुल identical (एक जैसा) है? जैसे कि एक Dynamic Dropdown और एक Modal Popup, दोनों को ही open/close होने के लिए एक ही तरह के toggle boolean state की जरूरत होती है। अब सवाल यह आता है कि क्या हम इस logic को दोबारा लिखने के बजाय कहीं reusable बना सकते हैं? यहीं पर एंट्री होती है React के एक बेहद ताकतवर design pattern की, जिसे हम &lt;strong&gt;React Render Props Pattern&lt;/strong&gt; कहते हैं।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Quick Answer:&lt;/strong&gt; React Render Props Pattern एक ऐसी technique है जिसमें हम &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;React components&lt;/a&gt; के बीच state logic को share करने के लिए एक prop का use करते हैं, जिसकी value एक render function होती है। यह component खुद कुछ render करने के बजाय इस function को call करके data को UI rendering के लिए delegate कर देता है।&lt;br&gt;
आज इस deep-dive tutorial में, हम और आप मिलकर इस pattern का postmortem करेंगे। एक senior developer के नजरिए से हम समझेंगे कि React Hooks के आने के बाद भी इस pattern की क्या relevance है, और इसे production-grade projects में कैसे implement किया जाता है। तो चाय का कप बगल में रख लीजिए, और चलिए शुरू करते हैं!&lt;/p&gt;
&lt;h2&gt;
  
  
  React Render Props Pattern क्या है? (What is Render Props Pattern?)
&lt;/h2&gt;

&lt;p&gt;सरल शब्दों में कहें तो, &lt;strong&gt;React Render Props Pattern&lt;/strong&gt; एक ऐसा coding design pattern है जहां एक component को एक specialized prop पास किया जाता है। इस prop की value कोई string, object या array नहीं होती, बल्कि एक &lt;strong&gt;JavaScript Function&lt;/strong&gt; होती है। यह function तय करता है कि स्क्रीन पर क्या render होगा।&lt;/p&gt;

&lt;p&gt;जब आप किसी component को render props pattern के साथ design करते हैं, तो वह component खुद अपनी कोई HTML markup (UI) render नहीं करता। इसके बजाय, वह सिर्फ अपने internal state और business logic को handle करता है, और उस state dynamic data को उसी render prop function के argument के रूप में पास कर देता है।&lt;/p&gt;

&lt;p&gt;इस pattern की official definition को आप &lt;a href="https://legacy.reactjs.org/docs/render-props.html" rel="noopener noreferrer"&gt;React Official Documentation&lt;/a&gt; पर भी देख सकते हैं।&lt;/p&gt;

&lt;p&gt;ध्यान देने वाली बात ये है कि इस prop का नाम "render" होना बिल्कुल भी जरूरी नहीं है। आप इसका नाम &lt;code&gt;render&lt;/code&gt;, &lt;code&gt;children&lt;/code&gt;, &lt;code&gt;renderUI&lt;/code&gt;, या जो मन करे रख सकते हैं। मुख्य बात यह है कि वह prop एक function होना चाहिए जो JSX return करे।&lt;/p&gt;
&lt;h2&gt;
  
  
  आखिर हमें Render Props Pattern की जरूरत क्यों पड़ी? (Why do we need it?)
&lt;/h2&gt;

&lt;p&gt;React में reusable code लिखना सबसे बड़ी कला है। मान लीजिए आपके पास दो components हैं:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MouseTracker:&lt;/strong&gt; जो screen पर mouse के coordinates (X, Y) track करता है और एक बिल्ली (cat) की image को उस coordinate पर दिखाता है।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tooltip:&lt;/strong&gt; जो mouse coordinates को track करके एक tooltip box की position set करता है।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;यहाँ दोनों ही cases में, mouse coordinates (X, Y) को track करने का logic बिल्कुल copy-paste है। अगर हम traditional approach से जाएँगे, तो हमें दोनों components में &lt;code&gt;useState&lt;/code&gt; और &lt;code&gt;useEffect&lt;/code&gt; का setup बार-बार लिखना पड़ेगा।&lt;/p&gt;

&lt;p&gt;इस logic duplication को खत्म करने के लिए हमारे पास तीन रास्ते होते हैं:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Higher-Order Components (HOC)&lt;/li&gt;
&lt;li&gt;React Render Props Pattern&lt;/li&gt;
&lt;li&gt;Custom React Hooks&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;HOCs के साथ "wrapper hell" और naming conflicts की बड़ी समस्या होती थी, जिसके कारण Render Props Pattern काफी लोकप्रिय हुआ।&lt;/p&gt;
&lt;h2&gt;
  
  
  Render Props Pattern का Architecture Flow
&lt;/h2&gt;

&lt;p&gt;यह pattern कैसे काम करता है, इसे समझने के लिए नीचे दिए गए component flow design को ध्यान से देखिए:&lt;/p&gt;

&lt;p&gt;🏗️ Render Props Pattern Flow&lt;/p&gt;

&lt;p&gt;Parent Component&lt;br&gt;
→&lt;br&gt;
Wrapper Component (Logic inside)&lt;br&gt;
→&lt;br&gt;
Render Function (State sent back)&lt;br&gt;
→&lt;br&gt;
Custom UI rendered on screen&lt;/p&gt;

&lt;p&gt;Diagram: Wrapper component maintains state, passes state to the render prop function, which returns actual JSX back to the screen.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step-by-Step Implementation: Live Coding Example
&lt;/h2&gt;

&lt;p&gt;चलिए, अब हवा में बातें बंद करते हैं और सीधे code editor में चलते हैं। हम एक complete, production-ready live example बनाएंगे। &lt;/p&gt;

&lt;p&gt;हम एक &lt;strong&gt;Mouse Tracker Component&lt;/strong&gt; बनाएंगे जो mouse coordinates को state में hold करेगा, और किसी भी consumer component को screen पर tracking UI render करने की आज़ादी देगा।&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1: Wrapper Component बनाना (The Logic Provider)
&lt;/h3&gt;

&lt;p&gt;सबसे पहले, हम &lt;code&gt;MouseTracker.jsx&lt;/code&gt; component बनाएंगे जो mouse coordinates को capture करने का logic contain करेगा।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useEffect&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// यह component खुद कोई UI render नहीं करता, सिर्फ state pass करता है&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MouseTracker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;render&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;coords&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setCoords&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleMouseMove&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;setCoords&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;clientX&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;clientY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;windowWidth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerWidth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;windowHeight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHeight&lt;/span&gt;
      &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;mousemove&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handleMouseMove&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Event listener clean up करना न भूलें (Memory leak prevention)&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;mousemove&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handleMouseMove&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;

  &lt;span class="c1"&gt;// यहाँ हम 'render' prop को call कर रहे हैं और coordinate state parameter के रूप में भेज रहे हैं&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;100vh&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;100%&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;relative&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;coords&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;MouseTracker&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Consumer Component में Logic Reuse करना
&lt;/h3&gt;

&lt;p&gt;अब हमारे पास &lt;code&gt;MouseTracker&lt;/code&gt; ready है। चलिए, अब हम दो अलग-अलग UI components में इस logic को dynamically reuse करते हैं।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;MouseTracker&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./MouseTracker&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// First Consumer: सिर्फ coordinates text render करेगा&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;CoordinateTextDisplay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;20px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#f3f4f6&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;borderRadius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;8px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;🔴 Real-time Mouse Tracker&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;MouseTracker&lt;/span&gt; 
        &lt;span class="na"&gt;render&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;fontSize&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;18px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;fontWeight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bold&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            The mouse is currently at &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#ef4444&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;X: &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;, &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#3b82f6&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Y: &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; 
      &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Second Consumer: Screen पर एक सुंदर dynamic circle render करेगा जो mouse pointer को follow करेगा&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MagicPointerDisplay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#1e1b4b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;minHeight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;400px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;relative&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hidden&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#ffffff&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;20px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;✨ Move your mouse here to see magic!&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;MouseTracker&lt;/span&gt; 
        &lt;span class="na"&gt;render&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; 
            &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
              &lt;span class="na"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;absolute&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="na"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="na"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;50px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;50px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="na"&gt;backgroundColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#10b981&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="na"&gt;borderRadius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;50%&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="na"&gt;pointerEvents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;none&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="na"&gt;boxShadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;0 0 20px #10b981&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="na"&gt;transition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;transform 0.05s linear&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
          &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; 
      &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Main App Component जहाँ दोनों logic reuse हो रहे हैं&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;40px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;fontFamily&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sans-serif&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;flex&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;flexDirection&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;column&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;30px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;React Render Props Pattern Implementation&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;CoordinateTextDisplay&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;MagicPointerDisplay&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;देखा आपने? &lt;code&gt;MouseTracker&lt;/code&gt; component ने coordinate tracking का भारी-भरकम logic handle कर लिया, और दोनों child elements (text display और bubble magic display) ने बिना tracking state logic लिखे सिर्फ UI render करने पर ध्यान केंद्रित किया।&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Children as a Render Prop
&lt;/h2&gt;

&lt;p&gt;कई developers को &lt;code&gt;render={}&lt;/code&gt; prop लिखना थोड़ा अजीब या verbose लगता है। React में, आप direct custom prop के बजाय standard &lt;code&gt;children&lt;/code&gt; prop का use करके भी Render Props Pattern implement कर सकते हैं। &lt;/p&gt;

&lt;p&gt;आइए देखते हैं इसे कैसे लिखते हैं:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Wrapper Component with children prop&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ScrollTracker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;children&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;scrollY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setScrollY&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleScroll&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;setScrollY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;scrollY&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;scroll&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handleScroll&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;scroll&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handleScroll&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;

  &lt;span class="c1"&gt;// यहाँ हम custom 'render' function की जगह 'children' function call कर रहे हैं&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;children&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;scrollY&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Parent Component usage&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ScrollApp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;ScrollTracker&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;scrollY&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fixed&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;black&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;white&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;10px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          You scrolled: &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;scrollY&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;px
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;ScrollTracker&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Comparison: Render Props vs HOC vs Custom Hooks
&lt;/h2&gt;

&lt;p&gt;React ecosystem में core state logical patterns के बीच की तुलना समझना बेहद जरूरी है। आइए इस comparison table से देखें कि कब कौन-सा pattern select करना चाहिए:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pattern / Feature&lt;/th&gt;
&lt;th&gt;Render Props&lt;/th&gt;
&lt;th&gt;Higher-Order Components (HOC)&lt;/th&gt;
&lt;th&gt;Custom Hooks&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Complexity&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;High (requires functional wrapping)&lt;/td&gt;
&lt;td&gt;Low (most modern)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Props Collision / Naming Conflict&lt;/td&gt;
&lt;td&gt;No (Explicitly pass parameters)&lt;/td&gt;
&lt;td&gt;Yes (Implicit props overwrite)&lt;/td&gt;
&lt;td&gt;No (Variables are returned)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Component Hierarchy Bloat&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;High (Creates wrapper components)&lt;/td&gt;
&lt;td&gt;None (Pure JS logic injection)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best Use Case&lt;/td&gt;
&lt;td&gt;Dynamic rendering based on runtime parent state&lt;/td&gt;
&lt;td&gt;Cross-cutting concerns (Auth wrapper, analytics logging)&lt;/td&gt;
&lt;td&gt;API fetching, pure logic separation, utility state&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Performance Issues और उनका समाधान (Fixing Performance &amp;amp; Errors)
&lt;/h2&gt;

&lt;p&gt;जब आप Render Props Pattern use करते हैं, तो अक्सर developers कुछ common errors या performance pitfalls का शिकार हो जाते हैं। आइए उनके बारे में विस्तार से समझें ताकि आपके application में कोई &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;error&lt;/a&gt; या lag न आए।&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Anonymous Functions और Re-renders की समस्या
&lt;/h3&gt;

&lt;p&gt;सबसे बड़ी performance issue तब आती है जब आप inline anonymous function को render prop में direct pass करते हैं, जैसे:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;MouseTracker&lt;/span&gt; &lt;span class="na"&gt;render&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;coords&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;DisplayCoords&lt;/span&gt; &lt;span class="na"&gt;coords&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;coords&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;गड़बड़ क्या है?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;हर बार जब container component re-render होगा, तब-तब एक नया function reference (anonymous function) memory में create होगा। अगर React virtual DOM comparison करेगा, तो उसे लगेगा कि props change हो गए हैं, जिससे child component बेवजह heavy computational cycle चलाएगा।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;सटीक समाधान (The Fix):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;इस render logic को एक regular instance method (या component function hook inside &lt;code&gt;useCallback&lt;/code&gt;) के रूप में bind करें, जिससे static references reference memory leak और useless calculation prevent कर सकें:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useCallback&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MyParentComponent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Callback Hook references hold करेगा&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;renderMousePointer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useCallback&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;coords&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;DisplayCoords&lt;/span&gt; &lt;span class="na"&gt;coords&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;coords&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;;&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;MouseTracker&lt;/span&gt; &lt;span class="na"&gt;render&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;renderMousePointer&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. "TypeError: render is not a function"
&lt;/h3&gt;

&lt;p&gt;यह error अक्सर तब आती है जब आप wrapper component का code strict types के बिना लिखते हैं और parent structure पर render target dynamic logic props pass करना भूल जाते हैं।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;सटीक समाधान (The Fix):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;हमेशा props को sanitize करें या components के default setup parameters declare करके fallback functions provide करें:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Using Prop-Types to secure function logic structures&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;PropTypes&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;prop-types&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MouseTracker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;render&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// logic...&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;render&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;stateCoords&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;MouseTracker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;propTypes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;render&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;PropTypes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;func&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isRequired&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Toh dosto, humne aaj seekha...
&lt;/h2&gt;

&lt;p&gt;तो दोस्तों, आज के इस interactive masterclass tutorial में हमने सीखा कि React Render Props Pattern क्या है, यह कैसे हमारी state reuse problem को चुटकियों में solve करता है, और इसे proper architecture flow के साथ clean React syntax में कैसे implement किया जाता है। &lt;/p&gt;

&lt;p&gt;भले ही आज की तारीख में Custom Hooks ने React community का पूरा focus खींचा हो, लेकिन dynamic wrapper widgets, library development (जैसे Formik या React Router v4) और conditional context propagation में Render Props Pattern आज भी एक solid और reliable design standard माना जाता है।&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently Asked Questions (FAQs)
&lt;/h3&gt;

&lt;p&gt;Q1: क्या React Hooks आने के बाद Render Props Pattern पूरी तरह obsolete (बेकार) हो गया है?&lt;br&gt;
नहीं, Hooks ज्यादातर simple logic share करने के लिए बेस्ट हैं, लेकिन जब आपको logical wrapper components (जैसे Router wrapper or state layouts) की custom UI render runtime dynamic setup control करनी हो, तब Render Props pattern आज भी React engineering में dominant use-case रखता है।&lt;br&gt;
Q2: क्या Render Props Pattern का use करके React Performance पर बुरा असर पड़ता है?&lt;br&gt;
यदि आप dynamic inputs inline anonymous rendering handlers utilize करते हैं, तो state changes पर reference rendering calculation mismatch loads generate होते हैं। हालाँकि, useCallback हुक या simple structured instance method implementation से इसे 100% optimized रखा जा सकता है।&lt;br&gt;
Q3: React Children as Render Props क्या है?&lt;br&gt;
जब हम nested JSX methods pass करने के लिए standard render prop variables custom tags use न करके, JSX component parameters के direct function callbacks structure reference write करते हैं, तो उसे context propagation rendering methods logic child implementation parameters कहते हैं।&lt;br&gt;
Q4: Higher-Order Components (HOC) और Render Props में से कौन सा बेहतर है?&lt;br&gt;
HOC, components code layers setup levels nested wrapper classes logic nested complications structures create करते हैं। Render props explicit mapping coordinates logic parameter levels bypass structures flow handle करने के कारण control tracking structure dynamic logic debugging points process simpler बनाता है।&lt;br&gt;
Q5: क्या मैं Render prop function का नाम "render" के अलावा कुछ और रख सकता हूँ?&lt;br&gt;
हाँ, बिल्कुल! यह absolute open architecture structure validation rules है। आप prop name design parameter specifications settings key render, children, generateBody, viewElement, configureComponent, या custom dynamic values handle configuration structures provide करके create customize logic layers inject can control dynamic state outputs directly can render variables!&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>React me Higher Order Components HOC Kya Hain</title>
      <dc:creator>banti kevat</dc:creator>
      <pubDate>Tue, 14 Jul 2026 12:50:22 +0000</pubDate>
      <link>https://dev.to/banti_kevat_8e2d123bb7994/react-me-higher-order-components-hoc-kya-hain-42j0</link>
      <guid>https://dev.to/banti_kevat_8e2d123bb7994/react-me-higher-order-components-hoc-kya-hain-42j0</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6p9l5ln1q09zlg0nlboh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6p9l5ln1q09zlg0nlboh.png" alt="React me Higher Order Components HOC Kya Hain (in Hindi)" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
React me Higher Order Components (HOC) kya hain aur ye kaise kaam karte hain? Is guide me HOC pattern, use-cases aur implementation step-by-step seekhein.&lt;/p&gt;

&lt;p&gt;Dosto, jab hum bade &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;ReactJS&lt;/a&gt; applications par kaam karte hain, toh aksar humein ek hi logic baar-baar likhna padta hai. Maano ki aapko 10 alag components me authentication check karni hai ya data fetch karna hai. Kya aap har baar same code likhenge? Bilkul nahi! Yahi wo jagah hai jahan &lt;strong&gt;Higher Order Components (HOC)&lt;/strong&gt; humari madad karte hain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Quick Answer:&lt;/strong&gt; Higher Order Component (HOC) ek advanced pattern hai jisme hum ek function banate hain jo dusre component ko argument ki tarah leta hai aur ek naya, enhanced component return karta hai. Ye &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;React components&lt;/a&gt; me code reuse aur cross-cutting concerns (jaise logging, authentication) ko handle karne ka behtareen tarika hai.&lt;/p&gt;
&lt;h2&gt;
  
  
  Higher Order Components (HOC) क्या है?
&lt;/h2&gt;

&lt;p&gt;Seedhe shabdo me kahein toh HOC ek &lt;strong&gt;"Function"&lt;/strong&gt; hai, component nahi. Programming ki duniya me ise &lt;em&gt;Higher Order Function&lt;/em&gt; ka concept kehte hain. Agar aap ek aisa function likhte hain jo ek component leta hai aur usse extra "powers" (jaise props ya state) add karke naya component deta hai, toh wahi HOC hai.&lt;/p&gt;

&lt;p&gt;Iska main maqsad &lt;strong&gt;Code Reusability&lt;/strong&gt; badhana hai. Agar aapke paas 5 alag components hain jinhe ek hi tarah ki styling ya data processing ki zaroorat hai, toh aap unhe wrap karne ke liye ek HOC bana sakte hain.&lt;/p&gt;

&lt;p&gt;🏗️ Architecture Diagram&lt;/p&gt;

&lt;p&gt;Original Component&lt;br&gt;
→&lt;br&gt;
HOC Wrapper&lt;br&gt;
→&lt;br&gt;
Enhanced Component&lt;/p&gt;

&lt;p&gt;Diagram: HOC ek simple component ko input lekar use transform karke power-up kar deta hai.&lt;/p&gt;
&lt;h2&gt;
  
  
  HOC कैसे काम करता है? (Step-by-Step)
&lt;/h2&gt;

&lt;p&gt;Chaliye ek real-world example dekhte hain. Maan lijiye humein ek &lt;strong&gt;withAuth&lt;/strong&gt; HOC banana hai jo check karega ki user logged-in hai ya nahi. Agar hai, toh component dikhao, warna "Please Login" message dikhao.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
import React from 'react';

// Ye hamara HOC function hai
const withAuth = (WrappedComponent) =&amp;gt; {
  return (props) =&amp;gt; {
    const isLoggedIn = true; // Ye logic actual app me auth context se aayega

    if (!isLoggedIn) {
      return &amp;lt;div&amp;gt;Please Login to view this page.&amp;lt;/div&amp;gt;;
    }

    // Agar user logged-in hai, original component return karo
    return &amp;lt;WrappedComponent {...props} /&amp;gt;;
  };
};

export default withAuth;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ab iska use kaise karenge? Bahut simple hai!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
const Dashboard = (props) =&amp;gt; {
  return &amp;lt;h1&amp;gt;Welcome to your Dashboard, {props.username}!&amp;lt;/h1&amp;gt;;
};

// HOC ke saath wrap karna
const EnhancedDashboard = withAuth(Dashboard);

// Export karte waqt enhanced component use karein
export default EnhancedDashboard;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  HOC का use कब करें और कब नहीं?
&lt;/h2&gt;

&lt;p&gt;Dosto, har cheez ke liye HOC ka use karna zaruri nahi hai. Aaiye ek table se samjhte hain:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Higher Order Component (HOC)&lt;/th&gt;
&lt;th&gt;Hooks (Alternative)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Complexity&lt;/td&gt;
&lt;td&gt;Thoda complex structure&lt;/td&gt;
&lt;td&gt;Kaafi simple aur readable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Main Use&lt;/td&gt;
&lt;td&gt;Component wrapping &amp;amp; logic sharing&lt;/td&gt;
&lt;td&gt;State logic &amp;amp; Side effects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Readability&lt;/td&gt;
&lt;td&gt;Wrapper hell ho sakta hai&lt;/td&gt;
&lt;td&gt;Bahut clean code rehta hai&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Dhyan dene wali baat ye hai ki:&lt;/strong&gt; Jab se React Hooks aaye hain, HOC ka use thoda kam ho gaya hai. Lekin kuch specific cases jaise "Layout wrappers" ya "Third-party libraries" (jaise React Router ka &lt;code&gt;withRouter&lt;/code&gt; purane versions me) ke liye HOC aaj bhi king hai.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Errors और Debugging Tips
&lt;/h2&gt;

&lt;p&gt;Jab aap HOC likhte hain, toh kuch common &lt;code&gt;error&lt;/code&gt; face kar sakte hain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prop Drilling/Loss:&lt;/strong&gt; Agar aap &lt;code&gt;{...props}&lt;/code&gt; pass karna bhool gaye, toh aapke original component tak props nahi pahunchenge. Isse components blank dikh sakte hain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Display Name:&lt;/strong&gt; React DevTools me HOC components ko debug karna mushkil hota hai kyunki wo sab "Anonymous" dikhte hain. Isse fix karne ke liye &lt;code&gt;WrappedComponent.displayName&lt;/code&gt; set karein.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hooks in HOC:&lt;/strong&gt; Yaad rakhein, HOC ke andar aap hooks use kar sakte hain, lekin HOC khud ek component nahi, ek function hai.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Official documentation ke liye &lt;a href="https://react.dev/reference/react" rel="noopener noreferrer"&gt;React official docs&lt;/a&gt; check karte rahein.&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently Asked Questions (FAQs)
&lt;/h3&gt;

&lt;p&gt;Q1: Kya HOC aur Custom Hooks ek hi hain?&lt;br&gt;
Nahi, ye alag hain. HOC ek pure component ko wrap karta hai (UI centric), jabki Custom Hooks sirf logic (state/side effects) ko reuse karte hain.&lt;br&gt;
Q2: Kya hum multiple HOCs ek saath use kar sakte hain?&lt;br&gt;
Haan, aap components ko multiple wrappers me wrap kar sakte hain, jaise: &lt;code&gt;withAuth(withLogger(Dashboard))&lt;/code&gt;. Isse "Wrapper Hell" kehte hain, isliye ise limit me rakhein.&lt;br&gt;
Q3: HOC me "Props" pass karna kyun zaruri hai?&lt;br&gt;
Kyuki wrapper component original component ko render karta hai. Agar aap props pass nahi karenge, toh child component ko kabhi data nahi milega.&lt;br&gt;
Q4: Kya HOC performance ko slow karta hai?&lt;br&gt;
HOC ek extra layer add karta hai, lekin agar sahi tareeke se use ho, toh ye negligible hai. Avoid nesting too many HOCs.&lt;br&gt;
Q5: Kya main class component me HOC use kar sakta hoon?&lt;br&gt;
Haan, HOC class aur functional components dono ke saath kaam karta hai. Ye React ke pattern ka feature hai, components ka nahi.&lt;/p&gt;

&lt;p&gt;Toh dosto, humne aaj seekha ki HOC kya hai aur ise project me kaise implement karte hain. Yaad rakhein, modern React me Hooks ka pehle try karein, agar logic shared component structure me chahiye tabhi HOC use karein. Happy coding!&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>React Component Lifecycle Kya Hai (Complete Guide (Hindi)</title>
      <dc:creator>banti kevat</dc:creator>
      <pubDate>Tue, 14 Jul 2026 10:17:13 +0000</pubDate>
      <link>https://dev.to/banti_kevat_8e2d123bb7994/react-component-lifecycle-kya-hai-complete-guide-hindi-57m9</link>
      <guid>https://dev.to/banti_kevat_8e2d123bb7994/react-component-lifecycle-kya-hai-complete-guide-hindi-57m9</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Folewo23t3s4neq7palz7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Folewo23t3s4neq7palz7.png" alt="React Component Lifecycle Kya Hai (Complete Guide in Hindi)" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
React Component Lifecycle kya hai? Is complete Hindi guide me components ke birth, update, aur death phases ko hooks aur lifecycle methods ke sath sikhein.&lt;/p&gt;

&lt;p&gt;मेरे प्यारे दोस्तों, अगर आप ReactJS की दुनिया में कदम रख चुके हैं, तो आपने एक बात जरूर नोटिस की होगी — यहाँ सब कुछ components के इर्द-गिर्द घूमता है। लेकिन क्या आपने कभी सोचा है कि एक React Component स्क्रीन पर आने से लेकर गायब होने तक किस सफर से गुजरता है? जब हम कोई एप्लीकेशन बनाते हैं, तो बैकग्राउंड में डेटा लोड करना, इवेंट्स को संभालना, और मेमोरी को मैनेज करना बेहद जरूरी हो जाता है। अगर हम इस साइकिल को नहीं समझेंगे, तो हमारी ऐप में मेमोरी लीक्स और परफॉरमेंस की समस्याएँ आने लगेंगी। चलिए, आज अपने 50 सालों के प्रोग्रामिंग अनुभव का निचोड़ लेकर मैं आपके साथ बैठ रहा हूँ ताकि हम मिलकर इस "React Component Lifecycle" के पूरे रहस्य को बहुत ही आसान और मजेदार भाषा में डिकोड कर सकें!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Quick Answer:&lt;/strong&gt; &lt;strong&gt;React Component Lifecycle&lt;/strong&gt; वह सीरीज है जिसके तहत एक component बनता है (Mounting), अपडेट होता है (Updating), और स्क्रीन से हटता है (Unmounting)। Functional components में इस पूरी साइकिल को मैनेज करने के लिए &lt;strong&gt;useEffect Hook&lt;/strong&gt; का इस्तेमाल किया जाता है, जो class components के पुराने lifecycle methods का एक आधुनिक विकल्प है।&lt;/p&gt;
&lt;h2&gt;
  
  
  React Component Lifecycle क्या है और इसकी आवश्यकता क्यों है?
&lt;/h2&gt;

&lt;p&gt;सरल शब्दों में कहें तो, जैसे एक इंसान का जीवन चक्र होता है — जन्म (Birth), विकास (Growth), और मृत्यु (Death) — ठीक उसी तरह एक &lt;a href="https://itinfohubs.blogspot.com/search/label/ReactJS" rel="noopener noreferrer"&gt;React components&lt;/a&gt; का भी अपना एक जीवन चक्र (Lifecycle) होता है। जब कोई component स्क्रीन पर पहली बार दिखाई देता है, जब उसका डेटा बदलता है, या जब वह स्क्रीन से हट जाता है, तो React कई तरह के फंक्शन्स को ट्रिगर करता है।&lt;/p&gt;

&lt;p&gt;अब सवाल उठता है कि हमें इसकी जरूरत क्यों है? मान लीजिए आप एक रियल-टाइम स्टॉक मार्केट ट्रैकर या मौसम बताने वाली एप्लीकेशन बना रहे हैं। जैसे ही आपका component स्क्रीन पर लोड हो, आपको तुरंत API से लेटेस्ट डेटा मंगाना होगा। जब यूजर किसी दूसरे पेज पर जाए, तो आपको बैकग्राउंड में चल रहे इंटरनेट कनेक्शंस को बंद करना होगा ताकि यूजर का इंटरनेट और डिवाइस की मेमोरी फालतू में खर्च न हो। इन सभी कामों को सही समय पर करने के लिए हमें component के लाइफसाइकल को समझना और संभालना पड़ता है।&lt;/p&gt;

&lt;p&gt;🏗️ React Component Lifecycle Flow Diagram&lt;/p&gt;

&lt;p&gt;Mounting (Birth in DOM)&lt;br&gt;
→&lt;br&gt;
Updating (State/Props Change)&lt;br&gt;
→&lt;br&gt;
Unmounting (Removal from DOM)&lt;/p&gt;

&lt;p&gt;Diagram: React Component Lifecycle के तीन मुख्य चरण।&lt;/p&gt;
&lt;h2&gt;
  
  
  Component Lifecycle के तीन मुख्य Phases (चरण)
&lt;/h2&gt;

&lt;p&gt;React में एक component का पूरा सफर तीन मुख्य चरणों में बंटा हुआ है। आइए इन तीनों को बहुत करीब से और आसान उदाहरणों के साथ समझते हैं:&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Mounting Phase (जन्म)
&lt;/h3&gt;

&lt;p&gt;यह वह पहला चरण है जब component का नया बच्चा पैदा होता है और पहली बार ब्राउज़र के DOM में अपनी जगह बनाता है। इस फेज में component का इनिशियलाइजेशन होता है, डिफ़ॉल्ट props सेट किए जाते हैं, और शुरुआती state डिक्लेयर की जाती है। इस समय पर हम API से डेटा फैच करने जैसे महत्वपूर्ण काम करते हैं ताकि यूजर को तुरंत स्क्रीन पर डेटा दिखाई दे।&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Updating Phase (विकास/बदलाव)
&lt;/h3&gt;

&lt;p&gt;जब component स्क्रीन पर आ जाता है, तो यूजर उसके साथ इंटरैक्ट करता है। जैसे ही component की &lt;code&gt;state&lt;/code&gt; या उसे मिलने वाले &lt;code&gt;props&lt;/code&gt; बदलते हैं, React को पता चल जाता है कि स्क्रीन पर कुछ नया दिखाना है। इस बदलाव की वजह से component दोबारा रेंडर (Re-render) होता है। इसे हम Updating Phase कहते हैं।&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Unmounting Phase (मृत्यु/विदाई)
&lt;/h3&gt;

&lt;p&gt;यह component के जीवन का आखिरी पड़ाव है। जब यूजर किसी दूसरे पेज पर जाता है या किसी बटन को दबाकर उस component को छुपा देता है, तब वह component DOM से पूरी तरह हटा दिया जाता है। इस फेज में हमें सफ़ाई (Cleanup) का काम करना होता है, जैसे कि चल रहे टाइमर्स (setInterval) को रोकना या एक्टिव इवेंट लिसनर्स को हटाना।&lt;/p&gt;
&lt;h2&gt;
  
  
  Class Components vs Functional Components: बदलाव का सफर
&lt;/h2&gt;

&lt;p&gt;पुराने समय में, जब React में Class Components का बोलबाला था, तब हम हर फेज के लिए अलग-अलग इन-बिल्ट मेथड्स का इस्तेमाल करते थे। लेकिन आधुनिक React (React 16.8 के बाद) में Hooks के आने से, Functional Components ही राज कर रहे हैं। अब हमें अलग-अलग मेथड्स याद रखने की जरूरत नहीं पड़ती; केवल एक अकेला &lt;strong&gt;useEffect Hook&lt;/strong&gt; इन सभी कामों को बखूबी संभाल लेता है।&lt;/p&gt;

&lt;p&gt;आइए एक टेबल के जरिए देखते हैं कि पुराने क्लास मेथड्स और नए फंक्शनल हुक्स में क्या संबंध है, जिससे आपको समझने में आसानी होगी:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Lifecycle Phase&lt;/th&gt;
&lt;th&gt;Class Component Method&lt;/th&gt;
&lt;th&gt;Functional Hook Equivalent&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mounting (Birth)&lt;/td&gt;
&lt;td&gt;componentDidMount()&lt;/td&gt;
&lt;td&gt;useEffect(() =&amp;gt; {}, [])&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Updating (Change)&lt;/td&gt;
&lt;td&gt;componentDidUpdate()&lt;/td&gt;
&lt;td&gt;useEffect(() =&amp;gt; {}, [dependency])&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unmounting (Death)&lt;/td&gt;
&lt;td&gt;componentWillUnmount()&lt;/td&gt;
&lt;td&gt;useEffect(() =&amp;gt; { return () =&amp;gt; {} }, [])&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;ध्यान देने वाली बात ये है कि अगर आप React के बेहतरीन डेवलपर बनना चाहते हैं, तो आपको हुक्स का सही इस्तेमाल करना ही होगा। विस्तृत जानकारी के लिए आप &lt;a href="https://react.dev" rel="noopener noreferrer"&gt;React Official Documentation&lt;/a&gt; भी पढ़ सकते हैं, जो कि सबसे सटीक और विश्वसनीय सोर्स है।&lt;/p&gt;
&lt;h2&gt;
  
  
  Step-by-Step Production-Ready Code Implementation
&lt;/h2&gt;

&lt;p&gt;चलिए, अब सीधे काम की बात पर आते हैं। कोडिंग को सिर्फ थ्योरी से नहीं समझा जा सकता। हम एक कंप्लीट, प्रोडक्शन-रेडी और फुली-फंक्शनल React Component लिखेंगे। इस उदाहरण में हम एक "User Profile Card" बनाएंगे जो इंटरनेट से डेटा मंगाएगा (Mounting), यूजर के स्टेटस को अपडेट करेगा (Updating), और स्क्रीन से हटते ही एक एक्टिव टाइमर को क्लीनअप करेगा (Unmounting)।&lt;/p&gt;

&lt;p&gt;इस कोड को बहुत ध्यान से देखें और समझने की कोशिश करें कि हर लाइन क्या काम कर रही है:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState, useEffect } from 'react';

function UserDashboard({ userId }) {
  const [userData, setUserData] = useState(null);
  const [loading, setLoading] = useState(true);
  const [secondsActive, setSecondsActive] = useState(0);

  // 1. MOUNTING PHASE: Component के लोड होते ही डेटा फैच करना
  useEffect(() =&amp;gt; {
    console.log("Component DOM में माउंट हो गया है! API कॉल शुरू हो रही है...");

    // API से डमी डेटा लाने का मॉक फंक्शन
    const fetchUserData = async () =&amp;gt; {
      try {
        setLoading(true);
        // डमी API रिस्पॉन्स का टाइमआउट सेट कर रहे हैं
        setTimeout(() =&amp;gt; {
          setUserData({
            name: "अमित शर्मा",
            role: "सीनियर सॉफ्टवेयर इंजीनियर",
            company: "Tech Solutions Inc."
          });
          setLoading(false);
          console.log("डेटा सफलतापूर्वक लोड हो गया है!");
        }, 1500);
      } catch (error) {
        console.error("डेटा फैच करने में एरर आया:", error);
        setLoading(false);
      }
    };

    fetchUserData();
  }, []); // खाली dependency array ([]) का मतलब है कि यह सिर्फ माउंटिंग पर एक बार चलेगा

  // 2. UPDATING PHASE: जब userId या userData बदलेगा तो यह इफेक्ट चलेगा
  useEffect(() =&amp;gt; {
    if (userData) {
      console.log(`यूजर प्रोफाइल अपडेट हो गई है! नया नाम: ${userData.name}`);
      document.title = `${userData.name} - Dashboard`;
    }
  }, [userData]); // यह केवल तब रन होगा जब userData स्टेट बदलेगी

  // 3. UNMOUNTING PHASE: टाइमर सेट करना और कंपोनेंट अनमाउंट होने पर क्लीनअप करना
  useEffect(() =&amp;gt; {
    console.log("एक एक्टिविटी टाइमर शुरू किया जा रहा है...");
    const timerInterval = setInterval(() =&amp;gt; {
      setSecondsActive((prevSeconds) =&amp;gt; prevSeconds + 1);
    }, 1000);

    // क्लीनअप फंक्शन (यह componentWillUnmount की तरह काम करता है)
    return () =&amp;gt; {
      console.log("कंपोनेंट अनमाउंट हो रहा है! टाइमर इंटरवल को क्लियर किया जा रहा है...");
      clearInterval(timerInterval);
    };
  }, []); // खाली एरे के साथ रिटर्न फंक्शन अनमाउंट होने पर ही चलता है

  if (loading) {
    return (

        ### डेटा लोड हो रहा है, कृपया प्रतीक्षा करें...



    );
  }

  return (

      ## यूजर डैशबोर्ड




---


      नाम: {userData.name}


      पद: {userData.role}


      कंपनी: {userData.company}




---



        ⏱️ आप इस पेज पर {secondsActive} सेकंड से सक्रिय हैं।


  );
}

export default UserDashboard;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;इस कोड को जब आप अपने प्रोजेक्ट में चलाएंगे, तो ब्राउज़र के कंसोल (Console) को जरूर खोलकर देखिएगा। आपको साफ दिखाई देगा कि कब कौन सा मैसेज प्रिंट हो रहा है। यही सबसे बढ़िया तरीका है किसी भी कॉन्सेप्ट को प्रैक्टिकली सीखने का!&lt;/p&gt;

&lt;h2&gt;
  
  
  Edge Cases और सामान्य गलतियाँ (Common Errors &amp;amp; Debugging)
&lt;/h2&gt;

&lt;p&gt;दोस्तों, जब हम कंपोनेंट्स की लाइफसाइकल के साथ काम करते हैं, तो अक्सर कुछ ऐसी गलतियाँ हो जाती हैं जो बड़े-बड़े धुरंधर डेवलपर्स को भी परेशान कर देती हैं। आइए इनके बारे में बात करते हैं ताकि आप इन मुश्किलों से बच सकें:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;useEffect में Infinite Loop बन जाना:&lt;/strong&gt;
यह सबसे आम गलती है। मान लीजिए आपने &lt;code&gt;useEffect&lt;/code&gt; के अंदर कोई स्टेट अपडेट की (जैसे &lt;code&gt;setUserData&lt;/code&gt;) और उस स्टेट को ही dependency array में डाल दिया। इससे क्या होगा? स्टेट बदलेगी -&amp;gt; इफेक्ट चलेगा -&amp;gt; स्टेट फिर बदलेगी -&amp;gt; इफेक्ट फिर चलेगा... और यह सिलसिला कभी खत्म नहीं होगा।&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;समाधान:&lt;/strong&gt; हमेशा अपने dependency array को बहुत ध्यान से डिजाइन करें। केवल उन्हीं वेरिएबल्स को डालें जिन पर आपका इफेक्ट सचमुच निर्भर करता है।&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Memory Leaks होना (क्लीनअप न करना):&lt;/strong&gt;
यदि आप अपने कंपोनेंट में कोई &lt;code&gt;setInterval&lt;/code&gt;, &lt;code&gt;addEventListener&lt;/code&gt; या WebSocket कनेक्शन चालू करते हैं और उसे अनमाउंट होने पर बंद नहीं करते, तो वह बैकग्राउंड में चलता ही रहेगा। इससे आपकी ऐप स्लो हो जाएगी।&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;समाधान:&lt;/strong&gt; अपने &lt;code&gt;useEffect&lt;/code&gt; से हमेशा एक क्लीनअप फंक्शन रिटर्न करें जो इन बाहरी सोर्सेज को हटा या बंद कर दे। अगर कभी आपको कंपोनेंट की एरर्स को समझने और उन्हें ठीक करने में परेशानी हो, तो आप हमारे &lt;a href="https://itinfohubs.blogspot.com/search/label/Error%20Solving" rel="noopener noreferrer"&gt;Error Solving&lt;/a&gt; सेक्शन को देख सकते हैं, जहाँ हमने कई रियल-वर्ल्ड प्रॉब्लम्स के आसान सॉल्यूशंस शेयर किए हैं।&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Stale Closures (पुरानी स्टेट वैल्यू मिलना):&lt;/strong&gt;
कभी-कभी &lt;code&gt;useEffect&lt;/code&gt; के अंदर आपको स्टेट की पुरानी वैल्यू मिलती है क्योंकि वह वैल्यू उस समय के "क्लोजर" में कैप्चर हो चुकी होती है जब इफेक्ट पहली बार चला था।&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;समाधान:&lt;/strong&gt; स्टेट को सीधे अपडेट करने के बजाय फंक्शनल अपडेट्स का इस्तेमाल करें, जैसे: &lt;code&gt;setCount(prev =&amp;gt; prev + 1)&lt;/code&gt;।&lt;/p&gt;

&lt;h2&gt;
  
  
  बेहतर परफॉरमेंस के लिए Best Practices
&lt;/h2&gt;

&lt;p&gt;अपने एप्लीकेशन की स्केलेबिलिटी और स्पीड बनाए रखने के लिए इन जरूरी बातों का विशेष ध्यान रखें:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;सिंगल-परपज इफेक्ट्स (Single-purpose Effects):&lt;/strong&gt; एक ही &lt;code&gt;useEffect&lt;/code&gt; में सारी दुनिया का काम करने की कोशिश न करें। डेटा फैचिंग के लिए अलग, और टाइमर के लिए अलग &lt;code&gt;useEffect&lt;/code&gt; लिखें। इससे आपका कोड साफ और मेंटेन करने योग्य रहता है।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency Array को खाली न छोड़ें जब जरूरत हो:&lt;/strong&gt; यदि आपका इफेक्ट किसी बाहरी वैरिएबल का इस्तेमाल कर रहा है, तो उसे डिपेंडेंसी एरे में जरूर डालें, अन्यथा आपका कोड पुराना डेटा दिखाता रहेगा।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cleanup को कभी न भूलें:&lt;/strong&gt; हर वो इवेंट जो ब्राउज़र या विंडो लेवल पर रजिस्टर हो रहा है, उसे क्लीनअप करना आपकी पहली प्राथमिकता होनी चाहिए।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;तो दोस्तों, आज हमने रिएक्ट कंपोनेंट लाइफसाइकल की गहराई को छुआ और समझा कि कैसे क्लास कंपोनेंट्स के पुराने तरीके नए फंक्शनल हुक्स में बदल गए हैं। लाइफसाइकल को अच्छी तरह समझना आपको एक साधारण डेवलपर से एक बेहतरीन सॉफ्टवेयर आर्किटेक्ट बनाता है। अब आपकी बारी है! इस कोड को अपने लोकल सिस्टम पर चलाकर देखें, उसमें थोड़े बदलाव करें और एक्सपेरिमेंट करें। कोडिंग करने से ही कोडिंग आती है। खुश रहिए, कोड करते रहिए!&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently Asked Questions (FAQs)
&lt;/h3&gt;

&lt;p&gt;Q1: React Component Lifecycle में 'Mounting' का क्या मतलब है?&lt;br&gt;
Mounting वह फेज है जब एक React component पहली बार तैयार होकर ब्राउज़र के असली DOM (Document Object Model) में डाला जाता है और स्क्रीन पर दिखाई देता है।&lt;br&gt;
Q2: Class Components के lifecycle methods का विकल्प functional components में क्या है?&lt;br&gt;
Functional components में Class components के सभी लाइफसाइकल मेथड्स (जैसे componentDidMount, componentDidUpdate, componentWillUnmount) का काम अकेले 'useEffect' Hook द्वारा मैनेज किया जाता है।&lt;br&gt;
Q3: Unmounting फेज में Cleanup फंक्शन का इस्तेमाल क्यों किया जाता है?&lt;br&gt;
Cleanup फंक्शन का इस्तेमाल मेमोरी लीक से बचने के लिए किया जाता है। इसकी मदद से हम एक्टिव टाइमर्स (setInterval), इवेंट लिसनर्स, या ओपन नेटवर्क कनेक्शंस को component के नष्ट होने पर बंद करते हैं।&lt;br&gt;
Q4: useEffect Hook में खाली dependency array ([]) का क्या काम है?&lt;br&gt;
जब हम dependency array को खाली ([]) छोड़ते हैं, तो उसके अंदर का कोड सिर्फ कंपोनेंट के माउंट होने पर एक बार चलता है, और दोबारा किसी भी स्टेट बदलाव पर ट्रिगर नहीं होता।&lt;br&gt;
Q5: क्या हम एक कंपोनेंट में एक से अधिक useEffect का इस्तेमाल कर सकते हैं?&lt;br&gt;
हाँ, बिल्कुल! बेहतर कोडिंग प्रैक्टिस यही है कि आप अलग-अलग लॉजिक (जैसे डेटा फेचिंग और विंडो इवेंट लिसनर्स) के लिए अलग-अलग 'useEffect' Hooks का उपयोग करें ताकि कोड को समझना आसान रहे।&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
