Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
🟢 Basics – React + Next.js की नींव  ·  Lesson 04

React Basics: JSX और Components

Component क्या है?

Component UI का दोबारा use होने वाला हिस्सा है — header, course card, button। React में component बस एक JavaScript function है जो JSX return करता है। इसे एक बार लिखिए और tag की तरह जितनी बार चाहें use कीजिए।

JSX – app/page.jsx
// A component is just a function that returns JSX
function Welcome() {
  return <h1>Namaste, student!</h1>
}

export default function Page() {
  return (
    <main>
      <Welcome />
      <Welcome />
    </main>
  )
}
Namaste, student! Namaste, student!

JSX क्या है?

JSX से आप JavaScript के अंदर HTML जैसा markup लिख सकते हैं। Build के समय यह normal JavaScript calls में बदल जाता है जो elements बनाती हैं।

आपका JSX<h1>Hi</h1>CompilerTurbopack / SWCReact elementJS objectPage पर HTML<h1>Hi</h1>
JSX असली HTML कैसे बनता है

JSX के नियम (बहुत ज़रूरी)

JSX – 6 नियम एक example में
export default function Page() {
  return (
    <>                                    {/* 1. one parent (Fragment) */}
      <h1 className="title">Courses</h1>  {/* 2. className, not class */}
      <label htmlFor="q">Search</label>   {/* 3. htmlFor, not for */}
      <input id="q" />                    {/* 4. close every tag */}
      <img src="/logo.png" alt="Logo" />
      <p style={{ color: 'green', fontSize: 18 }}>Open now</p> {/* 5. style is an object */}
      <button onClick={() => alert('Hi')}>Click</button>      {/* 6. camelCase events */}
    </>
  )
}
  1. एक parent element return करें — siblings को <>...</> (Fragment) या <div> में रखें।
  2. class की जगह className लिखें।
  3. Label पर for की जगह htmlFor लिखें।
  4. हर tag बंद करें: <img />, <br />, <input />।
  5. style camelCase keys वाला JavaScript object लेता है: {{ fontSize: 18 }}।
  6. Events camelCase होते हैं और function लेते हैं: onClick, onChange।
💡 Next.js में onClick जैसे events सिर्फ़ Client Components ('use client') में चलते हैं। यह Server vs Client lesson में सीखेंगे — अभी बस याद रखें।

{ } से JSX में JavaScript

Curly braces { } JSX के अंदर "JavaScript की खिड़की" खोलते हैं। इसमें कोई भी expression रख सकते हैं: variables, maths, function calls, ternary operator।

JSX
export default function Page() {
  const name = 'Aman'
  const marks = [78, 92, 85]
  const total = marks.reduce((a, b) => a + b, 0)

  return (
    <div>
      <p>Student: {name.toUpperCase()}</p>
      <p>Total: {total} / 300</p>
      <p>Percentage: {((total / 300) * 100).toFixed(1)}%</p>
      <p>Result: {total >= 99 ? 'Pass ✅' : 'Fail ❌'}</p>
    </div>
  )
}
Student: AMAN Total: 255 / 300 Percentage: 85.0% Result: Pass ✅

{ } के अंदर सीधे if या for जैसे statements नहीं लिख सकते। उनकी जगह ternary ? : या &&, और loops के लिए .map() use करें (Lists lesson में)।

अलग files में components बनाना और reuse करना

JSX – components/Header.jsx, components/Footer.jsx, app/page.jsx
// components/Header.jsx
export default function Header() {
  return (
    <header style={{ padding: 16, background: '#4f46e5', color: '#fff' }}>
      <strong>EduSite</strong>
    </header>
  )
}

// components/Footer.jsx
export default function Footer() {
  return <footer style={{ padding: 16 }}>© 2026 EduSite</footer>
}

// app/page.jsx
import Header from '@/components/Header'
import Footer from '@/components/Footer'

export default function HomePage() {
  return (
    <>
      <Header />
      <main style={{ padding: 16 }}>
        <h1>Learn coding the easy way</h1>
      </main>
      <Footer />
    </>
  )
}
🔒 localhost:3000EduSiteLearn coding the easy way© 2026 EduSite

Component tree

Pages components के अंदर components रखकर बनते हैं। React आपके page को एक tree की तरह देखता है:

RootLayoutapp/layout.jsxHomePageapp/page.jsxHeader · CourseCard × 3 · Footercomponents/Image · Link · buttonbuilt-in हिस्से
EduSite home page एक component tree के रूप में

Default vs named export

  • Default export (export default function Header) — हर file में एक मुख्य चीज़; किसी भी नाम से import: import Header from ...।
  • Named export — एक file में कई चीज़ें; braces में exact नाम से import।
JSX
// components/Buttons.jsx
export function PrimaryButton({ children }) { return <button className="btn">{children}</button> }
export function LinkButton({ children })    { return <button className="btn light">{children}</button> }

// usage — named exports use curly braces
import { PrimaryButton, LinkButton } from '@/components/Buttons'
💡 Next.js की special files (page.jsx, layout.jsx) में default export ज़रूरी है।

आम गलतियाँ

  • function header() lowercase नाम → कुछ नहीं दिखता। Header लिखें।
  • बिना parent के दो elements साथ return करना → "Adjacent JSX elements must be wrapped"।
  • style="color:red" लिखना → style={{ color: 'red' }} होना चाहिए।
  • page.jsx में export default भूलना → Next.js कहता है page का default export नहीं है।

सारांश

  • Component एक function है जो JSX return करता है; नाम capital letter से शुरू।
  • JSX नियम: एक parent, className, tags बंद करें, style object, camelCase events।
  • { } JSX के अंदर JavaScript expressions चलाता है।
  • Reusable components components/ में रखें और @/ से import करें।
✅ Practice

components/CourseBadge.jsx बनाइए जो "New" text वाली हरी pill दिखाए। Home page पर इसे तीन बार use कीजिए।

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

Component का नाम capital letter से क्यों शुरू होना चाहिए?
React lowercase tags जैसे
को HTML elements मानता है और
जैसे capital tags को आपके components। Lowercase component नाम unknown HTML tag बनकर render होगा।
class की जगह className क्यों?
JSX JavaScript है, और JavaScript में class reserved word है। React className use करता है, जो final HTML में class बन जाता है।
Fragment (<>...) क्या है?
Component को एक parent element return करना होता है। Fragment कई elements को page पर extra
जोड़े बिना group करता है।
क्या JSX और HTML एक ही हैं?
दिखने में मिलते-जुलते हैं लेकिन JSX JavaScript syntax है। Build के समय यह React function calls में बदलता है, इसलिए कुछ नियम अलग हैं: className, htmlFor, self-closing tags और camelCase attributes।
← Next.js Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

अगला topicReact में Props आपकी प्रगति: 4 / 37 (11%) · Lesson 5 / 37 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें