JavaScript bilan dinamik klasslar, template literal, class composition va content-detection muammosi — misol, test va amaliy topshiriqlar bilan.
JavaScript orqali holatga (state) qarab turli klasslarni tanlash — masalan tugma bosilganda yoki xato bo'lganda rangini o'zgartirish.
script.jsJavaScriptconst isActive = true;const className = `px-4 py-2 rounded-lg ${isActive ? "bg-blue-500 text-white" : "bg-gray-200 text-gray-700"}`;
Tailwind JIT engine kodni matn sifatida skanerlaydi, JavaScript'ni ishga tushirmaydi. Shuning uchun dinamik (runtime'da yig'iladigan) klass nomlari ba'zan ANIQLANMAYDI.
script.jsJavaScript// ❌ ISHLAMAYDI - Tailwind bu klassni "ko'rmaydi"const color = "blue";const className = `bg-${color}-500`;
script.jsJavaScript// ✅ ISHLAYDI - klass nomlari to'liq matn sifatida mavjudconst colorMap = {blue: "bg-blue-500",red: "bg-red-500",};const className = colorMap[color];
script.jsJavaScriptimport clsx from "clsx";const className = clsx("px-4 py-2 rounded-lg",isActive && "bg-blue-500 text-white",isDisabled && "opacity-50 cursor-not-allowed");
clsx yoki classnames kutubxonasi ko'p shartli klasslarni boshqarishda kodni ancha o'qilishli qiladi, ayniqsa 3+ shart bo'lganda.
Task: Ternar operator yordamida "Faol/Nofaol" holatiga qarab rangini o'zgartiradigan tugma yarating.
Task: 3 xil status (success, warning, error) uchun lookup obyekt yarating va Badge componentida ishlating.
Task: clsx kutubxonasidan foydalanib, 4 xil shartga bog'liq (active, disabled, loading, size) Button componentini yarating.
script.jsJavaScriptfunction Alert({ type }) {return <div className={`bg-${type}-100 border-${type}-500 text-${type}-700`}>Xabar</div>;}
Your Task: Bu component production build'da nega uslubsiz chiqadi?
<details> <summary>Solution</summary> `bg-${type}-100` kabi template literal'lar JIT tomonidan aniqlanmaydi, chunki ular runtime'da yig'iladi, kod faylida to'liq klass sifatida ko'rinmaydi. Yechim: har bir `type` qiymati uchun to'liq klass satrlarini o'z ichiga olgan lookup obyekt yaratish kerak, masalan `{ success: "bg-green-100 border-green-500 text-green-700", error: "bg-red-100 border-red-500 text-red-700" }`. </details>JavaScript bilan dinamik klasslar yaratish mumkin, lekin Tailwind JIT klass nomlarini to'liq matn sifatida qidirgani uchun "yarim yig'ilgan" (masalan template literal ichida interpolatsiya qilingan) klass nomlari ishlamaydi. Yechim — lookup obyektlar yoki clsx kabi kutubxonalar.
clsx/classnames ko'p shartli holatlarni tozalaydiscript.jsJavaScript// Xato:`bg-${color}-500`// To'g'ri:{ blue: "bg-blue-500", red: "bg-red-500" }[color]// clsx bilan:clsx("base-class", condition && "conditional-class")
Mavzu bo‘yicha tushunchalaringizni interaktiv test orqali sinovdan o‘tkazing va natijalarni bilib oling.
Darslikda o‘rganilgan qoidalarga asosan real kod yozing, testlardan o‘tkazing va yechimlarni mustahkamlang.
Test Sinovi
Hali topshirilmagan (kamida 75% kerak)
Amaliy Masalalar
0 / 3 ta yechildi (kamida 75% kerak)
Dars sifati va mazmunini yaxshilash uchun o‘z haqqoniy bahoingizni qoldiring.
Mavzuni to‘liq o‘zlashtirish uchun test sinovi, amaliy kodlash va bog‘liq darslar
O‘z bilimingizni interaktiv test savollari orqali tekshiring va darhol xatolarni tahlil qiling.
Nazariyani real kod yozish bilan mustahkamlang, avtomatik testlardan o‘ting va XP to‘plang.
Kurs bo‘yicha keyingi va bog‘liq mavzular: