JSX va Props — komponentlarga ma'lumot uzatish
JSX sintaksisining o'ziga xos xususiyatlari, props orqali ma'lumot uzatish va map bilan ro'yxat chizish.
JSX va Props
HTML'ga o'xshash, lekin JS kuchiga ega sintaksis. Komponentlarga ma'lumot uzatish.
Dars rejasi
6 ta mavzu1. JSX nima?
JSX — JavaScript XML. JS ichida HTML yozish imkoniyati. Brauzer uni to'g'ridan-to'g'ri tushunmaydi — Vite/Babel kompilyatsiya qiladi.
1// Siz yozgan JSX2const element = <h1 className="sarlavha">Salom</h1>;3
4// Brauzer ko'radigan JS5const element = React.createElement(6 "h1",7 { className: "sarlavha" },8 "Salom"9);10
11// Ikkalasi ham bir xil natija beradi2. JSX qoidalari
1// ❌ XATO — ikki element2function Salom() {3 return (4 <h1>Salom</h1>5 <p>Xush kelibsiz</p>6 );7}8
9// ✅ TO'G'RI — div ichida10function Salom() {11 return (12 <div>13 <h1>Salom</h1>14 <p>Xush kelibsiz</p>15 </div>16 );17}18
19// ✅ YOKI Fragment <> </>20function Salom() {21 return (22 <>23 <h1>Salom</h1>24 <p>Xush kelibsiz</p>25 </>26 );27}1// HTML'da2<div class="karta"></div>3<label for="email"></label>4
5// JSX'da (class JS kalit so'z!)6<div className="karta"></div>7<label htmlFor="email"></label>1// HTML'da bo'lishi mumkin2<img src="rasm.jpg">3<br>4<input type="text">5
6// JSX'da — majburiy self-close7<img src="rasm.jpg" />8<br />9<input type="text" />1// HTML: kichik harf2<div onclick="..." tabindex="0" autofocus>3
4// JSX: camelCase5<div onClick={...} tabIndex={0} autoFocus />3. JS ifodalari { } ichida
1function Salom() {2 const ism = "Ali";3 const yosh = 17;4 const rasm = "/avatar.jpg";5
6 return (7 <div>8 <h1>Salom, {ism}!</h1>9 <p>Yosh: {yosh}</p>10 <p>Keyingi yili: {yosh + 1}</p>11 <img src={rasm} alt={ism} />12
13 {/* Ifoda — ha. Deklaratsiya — yo'q */}14 <p>{yosh >= 18 ? "Voyaga yetgan" : "Bola"}</p>15 <p>{ism.toUpperCase()}</p>16
17 {/* Komment — shunday yoziladi */}18 </div>19 );20}4. Props — ma'lumot uzatish
Props (properties) — komponentga tashqaridan beriladigan «argumentlar». HTML atributlariga o'xshaydi. Faqat o'qish uchun (read-only).
1// Komponent — props qabul qiladi2function Salom(props) {3 return <h1>Salom, {props.ism}!</h1>;4}5
6// Ota komponent — props beradi7function App() {8 return (9 <div>10 <Salom ism="Ali" />11 <Salom ism="Vali" />12 <Salom ism="Hasan" />13 </div>14 );15}1// Oddiy2function ProfilKarta(props) {3 return (4 <div>5 <h2>{props.ism}</h2>6 <p>{props.yosh} yosh</p>7 <p>{props.kasb}</p>8 </div>9 );10}11
12// Destructuring bilan (tavsiya)13function ProfilKarta({ ism, yosh, kasb }) {14 return (15 <div>16 <h2>{ism}</h2>17 <p>{yosh} yosh</p>18 <p>{kasb}</p>19 </div>20 );21}22
23// Ishlatish24<ProfilKarta ism="Ali" yosh={17} kasb="Dasturchi" />1function Tugma({ matn, rang, kattalik, faol }) {2 return (3 <button4 style={{ background: rang, padding: kattalik }}5 disabled={!faol}6 >7 {matn}8 </button>9 );10}11
12// String — qo'shtirnoq13// Son/bool/obyekt — figurali qavs14<Tugma15 matn="Bosing"16 rang="#fbbf24"17 kattalik="12px 20px"18 faol={true}19/>5. map bilan ro'yxat
Massivdan ro'yxat chizish uchun .map() ishlatiladi. JSX ichida ham bemalol.
1function Royxat() {2 const mevalar = ["Olma", "Anor", "Banan", "Uzum"];3
4 return (5 <ul>6 {mevalar.map((meva, index) => (7 <li key={index}>{meva}</li>8 ))}9 </ul>10 );11}1function UserRoyxati() {2 const userlar = [3 { id: 1, ism: "Ali", yosh: 17, kasb: "Dasturchi" },4 { id: 2, ism: "Vali", yosh: 22, kasb: "Dizayner" },5 { id: 3, ism: "Hasan", yosh: 30, kasb: "Rassom" },6 ];7
8 return (9 <div className="ruyxat">10 {userlar.map(user => (11 <ProfilKarta12 key={user.id}13 ism={user.ism}14 yosh={user.yosh}15 kasb={user.kasb}16 />17 ))}18 </div>19 );20}6. key prop — nega kerak?
key — har bir ro'yxat elementiga berilgan unique identifikator. React uni elementlarni «tanib» olish uchun ishlatadi. Tez va silliq yangilanish uchun.
1// ❌ YOMON — index ishlatish2{items.map((item, i) => <li key={i}>{item}</li>)}3
4// ✅ YAXSHI — unique id5{items.map(item => <li key={item.id}>{item.nom}</li>)}6
7// Nega? Ro'yxat o'zgarganda (o'chirish, qo'shish, tartib)8// index qayta hisoblab chiqiladi — React chalkashadi.9// id esa element bilan birga qoladi.Kichik test
0 / 51.JSX'da class atributi qanday yoziladi?
2.JSX ichida JS ifodasi qanday yoziladi?
3.Props nima?
4.Ro'yxat chizishda nima ishlatiladi?
5.key prop nima uchun?