React Basics: JSX और Components
Component क्या है?
Component UI का दोबारा use होने वाला हिस्सा है — header, course card, button। React में component बस एक JavaScript function है जो JSX return करता है। इसे एक बार लिखिए और tag की तरह जितनी बार चाहें use कीजिए।
// 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>
)
}JSX क्या है?
JSX से आप JavaScript के अंदर HTML जैसा markup लिख सकते हैं। Build के समय यह normal JavaScript calls में बदल जाता है जो elements बनाती हैं।
JSX के नियम (बहुत ज़रूरी)
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 */}
</>
)
}- एक parent element return करें — siblings को
<>...</>(Fragment) या<div>में रखें। classकी जगहclassNameलिखें।- Label पर
forकी जगहhtmlForलिखें। - हर tag बंद करें:
<img />,<br />,<input />। stylecamelCase keys वाला JavaScript object लेता है:{{ fontSize: 18 }}।- Events camelCase होते हैं और function लेते हैं:
onClick,onChange।
onClick जैसे events सिर्फ़ Client Components ('use client') में चलते हैं। यह Server vs Client lesson में सीखेंगे — अभी बस याद रखें।{ } से JSX में JavaScript
Curly braces { } JSX के अंदर "JavaScript की खिड़की" खोलते हैं। इसमें कोई भी expression रख सकते हैं: variables, maths, function calls, ternary operator।
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>
)
}{ } के अंदर सीधे if या for जैसे statements नहीं लिख सकते। उनकी जगह ternary ? : या &&, और loops के लिए .map() use करें (Lists lesson में)।
अलग files में components बनाना और reuse करना
// 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 />
</>
)
}Component tree
Pages components के अंदर components रखकर बनते हैं। React आपके page को एक tree की तरह देखता है:
Default vs named export
- Default export (
export default function Header) — हर file में एक मुख्य चीज़; किसी भी नाम से import:import Header from ...। - Named export — एक file में कई चीज़ें; braces में exact नाम से import।
// 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'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 करें।
components/CourseBadge.jsx बनाइए जो "New" text वाली हरी pill दिखाए। Home page पर इसे तीन बार use कीजिए।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
Component का नाम capital letter से क्यों शुरू होना चाहिए?
class की जगह className क्यों?
Fragment (<>...>) क्या है?
क्या JSX और HTML एक ही हैं?
यह lesson कैसा लगा?
आपकी राय से हम content और बेहतर बनाते हैं।
अपना review और सुझाव लिखें (वैकल्पिक)
पढ़ने वालों के reviews
Video से सीखें – आसान Hindi में
चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT
▶ Channel subscribe करें