[&]
18.226.133.133
workshop: #14-react-components.html
Budowa, tworzenie oraz stylowanie komponentów
Komponenty są podstawowym sposobem na organizacje aplikacji React. Są niczym innym jak funkcja w JavaScript, którą można w prosty sposób połączyć z kodem HTML i stylem CSS. Komponenty można tworzyć na dwa sposoby:
Nazwy komponentów (funkcji) muszą rozpoczynać się wielką literą. Komponenty NIE powinny być tworzone wewnątrz innych komponentów – to nie wydajne i może generować błędy.
Komponenty mogą być tworzone jako funkcje i jako klasy. Komponent funkcji:
export function Komponent(){ return … }
Komponent klasy:
import React, { Component } from 'react'; export class KomponentKlasy extends Component(){ render(){ return … } }
Utwórz plik (w katalogu src):
src
Komponent.js
Uzupełnij go następująca treścią:
export default function Komponent(){ return ( <div>Jestem komponentem</div> ) }
Inny zapis tego samego kodu:
function Komponent(){ … } export default Komponent;
Wywołaj go w pliku aplikacji (import, następnie użycie):
import Komponent from './Komponent'; … <Komponent/> …
Wynikowa struktura projektu:
node_modules public src ├── App.css ├── App.js ├── App.test.js ├── Komponent.js ├── index.css ├── index.js ├── logo.svg ├── reportWebVitals.js └── setupTests.js
Uwagi:
Dokonując importu z pliku (zielony) można zmienić nazwę zmiennej komponentu (czerwony).
Importując element spośród wielu z komponentu należy użyć { WybranyKomponent }
{ WybranyKomponent }
Zapis użycia komponentu: </>
</>
Zapis użycia fragmentu: <> … </>
<> … </>
Zainstaluj program
npm install generate-react-cli
Wywołaj tworzenie komponentu
npx generate-react-cli component <NazwaKomponentu>
Program wymaga odpowiedzi na 8 pytań – odpowiadaj wg propozycji:
? Does this project use TypeScript? No ? Does this project use styled-components? Yes ? What testing library does your project use? None ? Set the default path directory to where your components will be generated in? src/components ? Would you like to create a corresponding stylesheet file with each component you generate? Yes ? Would you like to create a corresponding test file with each component you generate? No ? Would you like to create a corresponding story with each component you generate? No ? Would you like to create a corresponding lazy file (a file that lazy-loads your component out of the box and enables code splitting: https://reactjs.org/docs/code-splitting.html#code-splitting) with each component you generate? No
node_modules public src ├── App.css ├── App.js ├── App.test.js ├── components │ └── AutoComp │ ├── AutoComp.js │ └── AutoComp.styled.js ├── index.css ├── index.js ├── logo.svg ├── reportWebVitals.js └── setupTests.js