spinny:~/writing $ less mastering-react-server-components.md
12React Server Components (RSC) ने मौलिक रूप से बदल दिया है कि हम React एप्लिकेशन कैसे बनाते हैं। रेंडरिंग लॉजिक को सर्वर पर ले जाकर, हम क्लाइंट को भेजे जाने वाले JavaScript बंडल को काफी कम कर सकते हैं, जिससे लोड समय तेज होता है और उपयोगकर्ता अनुभव बेहतर होता है। इस लेख में, हम 2026 में RSC का लाभ उठाने के लिए उन्नत पैटर्न और सर्वोत्तम प्रथाओं का पता लगाएंगे।34## Server Components क्या हैं?56परंपरागत रूप से, React घटकों को पूरी तरह से क्लाइंट (CSR) पर रेंडर किया जाता था या सर्वर पर HTML (SSR) के रूप में प्री-रेंडर किया जाता था और फिर क्लाइंट पर हाइड्रेट किया जाता था। **Server Components** हमें घटकों को _विशेष रूप से_ सर्वर पर रेंडर करने की अनुमति देते हैं। उनका कोड कभी भी ब्राउज़र को नहीं भेजा जाता है।78### लाभ9101. **शून्य बंडल आकार**: Server Components में उपयोग की जाने वाली निर्भरताएँ (जैसे मार्कडाउन पार्सर या भारी तिथि पुस्तकालय) सर्वर पर रहती हैं।112. **सीधा बैकएंड एक्सेस**: आप API एंडपॉइंट्स को उजागर किए बिना सीधे अपने घटक के अंदर अपने डेटाबेस को क्वेरी कर सकते हैं।123. **स्वचालित कोड विभाजन**: सर्वर-साइड आयातित क्लाइंट घटकों को स्वचालित रूप से कोड-विभाजित किया जाता है।1314## डेटा फ़ेचिंग पैटर्न1516RSC के साथ, आप अपने घटकों को `async` बना सकते हैं और सीधे डेटा का इंतजार कर सकते हैं।1718```tsx19// app/users/page.tsx20import { db } from '@/lib/db';2122export default async function UsersPage() {23 const users = await db.user.findMany();2425 return (26 <main>27 <h1>उपयोगकर्ता</h1>28 <ul>29 {users.map((user) => (30 <li key={user.id}>{user.name}</li>31 ))}32 </ul>33 </main>34 );35}36```3738### स्ट्रीमिंग के लिए Suspense3940चूंकि डेटा लाना धीमा हो सकता है, डेटा लोड होने के दौरान तुरंत फ़ालबैक UI दिखाने के लिए अपने घटकों को `<Suspense>` में लपेटें।4142```tsx43import { Suspense } from 'react';44import UserList from './UserList';45import LoadingSkeleton from './LoadingSkeleton';4647export default function Page() {48 return (49 <section>50 <h1>मेरे उपयोगकर्ता</h1>51 <Suspense fallback={<LoadingSkeleton />}>52 <UserList />53 </Suspense>54 </section>55 );56}57```5859## सर्वर और क्लाइंट घटकों को मिलाना6061सबसे भ्रमित करने वाले पहलुओं में से एक यह है कि सर्वर और क्लाइंट घटकों को कैसे संयोजित किया जाए।6263**अंगूठे का नियम**: Server Components Client Components को आयात कर सकते हैं। Client Components सीधे Server Components को आयात _नहीं_ कर सकते। हालाँकि, आप एक Server Component को `children` के रूप में एक Client Component को पास कर सकते हैं।6465### "Children" पैटर्न6667```tsx68// ClientComponent.tsx69'use client';7071import { useState } from 'react';7273export default function ClientWrapper({ children }) {74 const [count, setCount] = useState(0);7576 return (77 <div onClick={() => setCount((c) => c + 1)}>78 गिनती: {count}79 {children} {/* यह एक Server Component हो सकता है! */}80 </div>81 );82}83```8485```tsx86// ServerPage.tsx87import ClientWrapper from './ClientWrapper';88import ServerContent from './ServerContent';8990export default function Page() {91 return (92 <ClientWrapper>93 <ServerContent /> {/* यह पूरी तरह से काम करता है */}94 </ClientWrapper>95 );96}97```9899## सामान्य नुकसान1001011. **Server Components में संदर्भ (Context) का उपयोग करना**: संदर्भ एक क्लाइंट-साइड अवधारणा है। यदि आपको सर्वर-साइड डेटा साझा करने की आवश्यकता है, तो इसे प्रॉप्स के रूप में पास करें या एक विशेष अनुरोध-स्कोप कैश का उपयोग करें।1022. **इवेंट हैंडलर जोड़ना**: आप एक Server Component में `onClick` या `onChange` नहीं जोड़ सकते। वह तर्क एक सामान्य Client Component लीफ नोड में है।103104## निष्कर्ष105106React Server Components केवल एक विशेषता नहीं हैं; वे एक प्रतिमान बदलाव हैं। सर्वर और क्लाइंट के बीच की सीमा को समझकर, आप ऐसे एप्लिकेशन बना सकते हैं जो अत्यधिक इंटरैक्टिव और अविश्वसनीय रूप से तेज़ दोनों हों।107
:2026 में React Server Components में महारत हासिल करेंlines 1-107 (END) — press q to close