composes-komento luokille CSS modules Reactissa

Tässä oppitunnissa tarkastelemme erittäin hyödyllistä tekniikkaa CSS-tyylien uudelleenkäyttämiseen yhdestä luokasta toisessa CSS modules -ympäristössä.

Palataan buttons -sovellukseen, jonka teimme edellisillä tunneilla. Katsotaan tiedostoa Buttons.module.css:

Buttons.module.css.btn1 {
  background-color: orange;
  border: 2px solid brown;
  color: white;
}

.btn2 {
  background-color: red;
  border: 2px solid green;
  color: yellow;
}

.btn3 {
  background-color: brown;
  border: 2px solid yellowgreen;
  color: orange;
}

Oletetaan, että haluamme kaikille napeille saman pyöristyksen ja fontin koon. Tietysti voisimme lisätä samat ominaisuudet jokaisessa luokassa. Mutta composes -komennon ansiosta CSS moduuleissa, toimimme toisin.

Aluksi luomme toisen luokan, esimerkiksi common-btn, johon laitamme nämä samat ominaisuudet. Ja jos haluat käyttää tämän luokan ominaisuuksia muissa, sinun täytyy käyttää niissä syntaksia:

cssvalitsija {
  composes: luokan nimi;
}

Nyt Buttons.module.css -tiedostomme näyttää tältä:

Buttons.module.css.common-btn {
  font-size: 16px;
  border-radius: 3px;
}

.btn1 {
  composes: common-btn;
  background-color: orange;
  border: 2px solid brown;
  color: white;
}

.btn2 {
  composes: common-btn;
  background-color: red;
  border: 2px solid green;
  color: yellow;
}

.btn3 {
  composes: common-btn;
  background-color: brown;
  border: 2px solid yellowgreen;
  color: orange;
}
Задание 1

Ota React-sovelluksesi inputs, jota teit edellisten oppituntien tehtävissä. Lisää kaikille syötekentille pari samaa CSS-tyyliä samoilla arvoilla. Luo lisäluokka, johon kirjoitat nämä tyylit. composes -komennon avulla levitä ne kaikkiin muihin syötekenttien luokkiin.