Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Tailwind-luokkien Käyttäminen JSX:ssä | Osio
React-sovellusten Tyylittely Tailwind CSS:llä

bookTailwind-luokkien Käyttäminen JSX:ssä

Pyyhkäise näyttääksesi valikon

Kun työskentelet Reactin ja Tailwind CSS:n kanssa, käytät Tailwindin apuluokkia suoraan JSX-elementeissä komponenttien tyylittämiseen. Oman CSS:n kirjoittamisen tai luokkavalitsimien käyttämisen sijaan lisäät Tailwind-luokat suoraan JSX-tunnisteiden className-attribuuttiin. Tämä lähestymistapa pitää tyylityksen lähellä komponenttilogiikkaa ja nopeuttaa kehitystä, koska sinun ei tarvitse vaihdella CSS- ja JavaScript-tiedostojen välillä.

Tailwind-luokkien lisäämiseksi käytä className-attribuuttia (älä class, joka on varattu JavaScriptissä). Esimerkiksi, jos haluat luoda painikkeen, jossa on sininen tausta, valkoinen teksti ja pyöristetyt kulmat, JSX-koodisi voisi näyttää tältä:

<button className='bg-blue-500 text-white rounded px-4 py-2'>
  Click Me
</button>

Voit yhdistellä niin monta Tailwind-luokkaa kuin tarvitset, eroteltuna välilyönneillä, saavuttaaksesi halutun ulkoasun. Tässä muutamia vinkkejä siistien ja ylläpidettävien luokkien kirjoittamiseen:

  • Ryhmittele samankaltaiset luokat, kuten välistys, värit ja typografia;
  • Vältä ristiriitaisten luokkien toistoa (esimerkiksi älä käytä sekä bg-blue-500 että bg-red-500 samassa elementissä);
  • Käytä monirivisiä merkkijonoja pitkille luokkalistoille, jotta koodi pysyy luettavana erityisesti monimutkaisissa komponenteissa.

Joskus haluat lisätä luokkia ehdollisesti—esimerkiksi korostaa painiketta, jos se on aktiivinen, tai piilottaa elementin tilan perusteella. Reactissa voit käyttää JavaScript-lausekkeita className-attribuutissa yhdistääksesi ja lisätäksesi luokkia ehdollisesti. Tämä tekee komponenteista dynaamisia ja tilaan tai propseihin reagoivia.

Yleinen tapa on käyttää template-litteraaleja ja ternäärisiä operaattoreita. Esimerkiksi, korostaaksesi painikkeen kun se on aktiivinen:

<button
  className={
    "px-4 py-2 rounded " +
    (isActive ? "bg-green-500 text-white" : "bg-gray-200 text-black")
  }
>
  Save
</button>

Vaihtoehtoisesti voit käyttää taulukon yhdistämistä tai apufunktioita hallitaksesi monimutkaisempaa luokkien yhdistämistä. Tärkeintä on pitää logiikka selkeänä ja välttää liian monimutkaisia lausekkeita JSX:ssä.

Parhaat käytännöt:

  • Pidä ehdollinen logiikka yksinkertaisena ja luettavana className-attribuutissa;
  • Abstrahoi monimutkaiset luokkien yhdistämiset apufunktioihin tarvittaessa;
  • Käytä aina className-attribuuttia (ei koskaan class) JSX:ssä yhteensopivuuden vuoksi Reactin kanssa.

Tämä työnkulku mahdollistaa Tailwindin utility-first-lähestymistavan täyden hyödyntämisen ja Reactin dynaamisuuden käyttöliittymien rakentamisessa.

Kun yhdistät Tailwind-luokkia Reactissa, joudut usein päättämään, mitkä luokat lisätään komponentin tilan tai propsien perusteella. Käyttämällä JavaScript-lausekkeita className-attribuutissa voit hallita, mitkä luokat sisällytetään renderöinnin yhteydessä. Tämä on erityisen hyödyllistä vaihdettaessa eri visuaalisten tilojen, kuten aktiivinen/epäaktiivinen tai virhe/onnistuminen, välillä.

Esimerkiksi saatat haluta lisätä reunavärin vain, kun syötteessä on virhe:

<input
  className={
    "block w-full px-3 py-2 border rounded " +
    (hasError ? "border-red-500" : "border-gray-300")
  }
/>

Tässä esimerkissä border-red-500-luokka lisätään vain, jos hasError on tosi; muuten syöte käyttää oletusreunaväriä. Tätä mallia voi laajentaa monimutkaisemmilla ehdoilla, mutta selkeys on aina etusijalla.

Jos sinun täytyy yhdistää useita ehdollisia luokkia, harkitse taulukon syntaksin ja yhdistämisen käyttöä:

<div
  className={[
    "p-4",
    isActive ? "bg-blue-100" : "bg-white",
    isDisabled && "opacity-50"
  ]
    .filter(Boolean)
    .join(" ")}
>
  Panel Content
</div>

Tämä tapa helpottaa luokkien lisäämistä tai poistamista useiden ehtojen perusteella ilman ylimääräisiä välilyöntejä tai määrittelemättömiä arvoja luokkalistassa.

Muista:

  • Käytä aina JavaScript-lausekkeita ehdollisille luokille;
  • Suosi selkeyttä ja ylläpidettävyyttä nokkeluuden sijaan;
  • Vältä saman tyyppisen utility-luokan lisäämistä useaan kertaan, sillä vain viimeinen jää voimaan.
question mark

Mikä seuraavista on oikea tapa lisätä Tailwind-luokkia ehdollisesti React JSX -elementtiin?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 2

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 1. Luku 2
some-alt