Tyylittely Styled Components -kirjastolla Reactissa
Edellisissä oppitunneissa tarkastelimme tyylittelymenetelmiä käyttämällä globaalia CSS:ää ja inline-tyylittelyä. Tässä oppitunnissa työskentelemme tehokkaamman lähestymistavan kanssa suurissa sovelluksissa - styled-components-kirjaston käytön.
Joten otetaan CSS-tyylejä vailla oleva komponenttimme, jota käytimme aiemmissa oppitunneissa:
function App() {
return (
<div>
<p>text</p>
<p>text</p>
<p>text</p>
</div>
);
}
Aluksi asennamme kirjaston
Styled Components:
npm install --save styled-components
Sitten tuomme tarvittavan
paketin komponenttiin App:
import styled from 'styled-components';
Nyt voimme kääriä tunnisteet tyyleihin ja käyttää niitä React-komponentteina, mutta nyt suoraan JS:ään liitetyillä tyyleillä. Tätä lähestymistapaa kutsutaan myös CSS:äksi JS:ssä.
Tyylitellään ensimmäinen kappale. Tätä varten
ennen App-funktiota tuontirivien jälkeen
luomme komponentin Text1. Kirjaston
styled-objektista tarvitsemme kappaleen,
jonka vuoksi kirjoitamme styled.p. Sitten,
mallimerkkijonossa luettelemme tarvittavat
CSS-tyylit - kuten tavallisessa CSS:ssä:
const Text1 = styled.p`
color: orangered;
font-weight: bold;
`;
Kuten näette, käytämme täällä puhdasta CSS:ää mallimerkkijonoina, mikä on erittäin kätevää. Samalla tavalla voimme käyttää media-kyselyitä, pseudoelementtejä, valitsimia ja muuta CSS-toiminnallisuutta.
Nyt App-komponentin funktion sisällä
korvaamme p-tunnisteen luomallamme komponentilla
Text1 CSS-tyyleillä:
<Text1>text</Text1>
Samalla tavalla tyylitellään
toinen ja kolmas kappale. Tätä varten
luomme komponentit Text2
ja Text3:
const Text2 = styled.p`
font-style: italic;
color: brown;
`;
const Text3 = styled.p`
background-color: orange;
font-weight: bold;
color: white;
`;
Lopuksi tyylitellään
meidän div. Tätä varten luomme komponentin
ja nimeämme sen Container:ksi:
const Container = styled.div`
width: 200px;
border: 2px solid brown;
padding: 10px;
text-align: center;
`;
Korvaamme kaikki tunnisteet luoduilla komponenteilla:
import styled from "styled-components";
const Container = styled.div`
width: 200px;
border: 2px solid brown;
padding: 10px;
text-align: center;
`;
const Text1 = styled.p`
color: orangered;
font-weight: bold;
`;
const Text2 = styled.p`
font-style: italic;
color: brown;
`;
const Text3 = styled.p`
background-color: orange;
font-weight: bold;
color: white;
`;
function App() {
return (
<Container>
<Text1>text</Text1>
<Text2>text</Text2>
<Text3>text</Text3>
</Container>
);
}
Tämän lähestymistavan ansiosta voidaan luoda uudelleenkäytettäviä komponentteja tyyleillä.
Jos avaat generoidun verkkosivun rakenteen selaimen kehittäjäpaneelissa, näet, että jokaisella komponentilla on generoitu omat uniikit luokat. Näin meidän ei tarvitse enää huolehtia luokkien välisistä ristiriidoista yksittäisten komponenttien välillä.
Samalla tavalla voidaan tyylittää komponentteja, käyttämällä esimerkiksi Emotion-kirjastoa.
Ota React-komponentti, jonka teit edellisen oppitunnin tehtävässä, tyylitä se käyttämällä Styled Components -kirjastoa.