Wstawianie danych do atrybutu style ze zmiennych w React
W poprzedniej lekcji pisaliśmy obiekt bezpośrednio w
atrybucie style. Możemy również
wykorzystać wstawianie danych do tego obiektu
ze zmiennych.
Weźmy nasz komponent React bez stylów CSS:
function App() {
return (
<div>
<p>text</p>
<p>text</p>
<p>text</p>
</div>
);
}
Teraz będziemy tworzyć zmienne i przypisywać im wartości właściwości CSS. Zacznijmy po kolei od stylów dla diva.
W pliku komponentu przed komendą
return utwórzmy zmienną
wd1 i przypiszmy jej wartość
'200px':
const wd1 = '200px';
W podobny sposób utwórzmy zmienne dla wszystkich wartości właściwości naszego diva:
const wd1 = '200px';
const br1 = '2px solid brown';
const pd1 = '10px';
const ta1 = 'center';
Teraz dodajmy zmienne dla pierwszego akapitu:
const co1 = 'orangered';
const fw1 = 'bold';
Dla drugiego akapitu:
const fs1 = 'italic';
const co2 = 'brown';
I wreszcie dla ostatniego. Tutaj
potrzebne będą tylko dwie, a nie trzy
zmienne. Nie ma sensu się powtarzać,
ponieważ wartość bold mamy już
dla pierwszego akapitu:
const bco1 = 'orange';
const co3 = 'white';
A teraz podstawimy zmienne
z wartościami stylów. Zróbmy
to dla pierwszego akapitu. Wstawmy
zmienne co1 i fw1
zamiast wartości w obiekcie:
<p style = {{ color: co1, fontWeight: fw1 }}>
text
</p>
W podobny sposób postąpimy z pozostałymi znacznikami.
W rezultacie kod naszego komponentu będzie wyglądać tak:
function App() {
const wd1 = '200px';
const br1 = '2px solid brown';
const pd1 = '10px';
const ta1 = 'center';
const co1 = 'orangered';
const fw1 = 'bold';
const fs1 = 'italic';
const co2 = 'brown';
const bco1 = 'orange';
const co3 = 'white';
return (
<div style = {{
width: wd1,
border: br1,
padding: pd1,
textAlign: ta1 }}>
<p style = {{ color: co1, fontWeight: fw1 }}>
text
</p>
<p style = {{ fontStyle: fs1, color: co2 }}>
text
</p>
<p style = {{
backgroundColor: bco1,
fontWeight: fw1,
color: co3 }}>
text
</p>
</div>
);
}
Zmodyfikuj kod rozwiązania zadania z poprzedniej lekcji tak, aby wartości właściwości CSS były przechowywane w zmiennych.