← Back to React Course | Chapter 2: JSX & Rendering Fundamentals | Lesson 9 of 10

React StrictMode क्या है

StrictMode एक strict teacher जैसा है जो आपके homework में उन mistakes को double-check करता है जो शायद आप खुद notice न करें।
Syntax
markup
<React.StrictMode>
  <App />
</React.StrictMode>

StrictMode क्या करता है

अपनी app के एक हिस्से को <React.StrictMode> में wrap करना extra development-only checks और warnings enable करता है, जिसमें कुछ functions (component bodies जैसे) को intentionally double-invoke करना शामिल है unsafe side effects से bugs surface करने में help करने के लिए।

Note: StrictMode सिर्फ development में अपने extra checks run करता है -- आपके users को मिलने वाले production build पर इसका कोई effect नहीं।
Warning: Mount पर एक component का console.log() दो बार print होना development में StrictMode के under expected behavior है, आपके code में कोई bug नहीं।

उदाहरण: What StrictMode Does

markup
<!DOCTYPE html>
<html>
<head>
  <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
  <div id="root"></div>
  <script type="text/babel">
function StrictNote() {
  return <p>Wrap the app root in &lt;React.StrictMode&gt; to enable extra dev checks.</p>;
}
ReactDOM.createRoot(document.getElementById('root')).render(
  <React.StrictMode>
    <StrictNote />
  </React.StrictMode>
);
  </script>
</body>
</html>

StrictMode क्या पकड़ने में Help करता है

StrictMode उन components को surface करने में help करता है जिनके side effects properly cleaned up नहीं हैं, deprecated API usage, और दूसरे patterns जो concurrent rendering जैसे future React features के under टूट सकते हैं।

Note: एक StrictMode warning को noise मानकर ignore करने के बजाय एक real signal मानें investigate करने के लिए।
Warning: StrictMode हर possible bug नहीं पकड़ता -- यह specifically unsafe patterns के एक known set को target करता है, general logic errors को नहीं।

उदाहरण: What StrictMode Helps Catch

markup
<!DOCTYPE html>
<html>
<head>
  <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
  <div id="root"></div>
  <script type="text/babel">
function EffectNote() {
  React.useEffect(() => {
    console.log('Effect ran -- StrictMode intentionally runs this twice in dev');
  }, []);
  return <p>Check the console for the double-run in development.</p>;
}
ReactDOM.createRoot(document.getElementById('root')).render(
  <React.StrictMode>
    <EffectNote />
  </React.StrictMode>
);
  </script>
</body>
</html>

अपनी App में StrictMode Enable करना

StrictMode अपने component tree के किसी भी हिस्से को एक <React.StrictMode> element में wrap करके enabled होता है। इसका खुद का कोई visible UI नहीं है -- यह सिर्फ इसके अंदर nested components के लिए extra development-time checks activate करता है।

आप अपनी पूरी app को wrap कर सकते हैं, या सिर्फ वह section जिसे आप check करना चाहते हैं।

Note: Development में अपने top-level <App /> को <React.StrictMode> में wrap करें ताकि हर component को extra checks का benefit मिले।
Warning: StrictMode checks एक production build में automatically skip हो जाती हैं, इसलिए सिर्फ इसकी warnings पर rely करना deployment के बाद bugs नहीं पकड़ेगा।

उदाहरण: Enabling StrictMode in Your App

markup
<!DOCTYPE html>
<html>
<head>
  <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
  <div id="root"></div>
  <script type="text/babel">
    function Greeting() {
      return <p>Hello from a StrictMode-wrapped component!</p>;
    }
    function App() {
      return (
        <React.StrictMode>
          <Greeting />
        </React.StrictMode>
      );
    }
    ReactDOM.createRoot(document.getElementById('root')).render(<App />);
  </script>
</body>
</html>
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. Development में components दो बार render होने पर confused होना -- वह StrictMode intentionally side effects check कर रहा है, कोई bug नहीं।
  2. यह मान लेना कि StrictMode production build को affect करता है -- यह सिर्फ development में अपने extra checks run करता है।
  3. सिर्फ app के एक हिस्से को wrap करना और दूसरे parts को वही warnings न मिलने पर surprised होना।
चैप्टर सारांश
  • <React.StrictMode> अपने child components के लिए extra development-only checks enable करता है।
  • इसका कोई visual output नहीं है और यह rendered UI को affect नहीं करता।
  • यह unsafe lifecycle usage और unexpected side effects को early catch करने में help करता है।
  • सभी checks production builds में automatically disabled हैं।
ब्राउज़र सपोर्ट

कोई browser-specific restrictions नहीं -- React 16.3 से available; development-mode only।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.