Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| composants_et_pages [2025/09/25 06:50] – créée paolo | composants_et_pages [2025/09/25 12:53] (Version actuelle) – paolo | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| # Composants et pages | # Composants et pages | ||
| + | |||
| + | Les composants sont les éléments de base d'un projet React. Chacun d' | ||
| + | |||
| + | #### Où ranger un composant ? | ||
| + | |||
| + | Imaginons que l'on souhaite faire un composant de formulaire comprenant **label** + **input**. | ||
| + | |||
| + | Pour cela on a deux possibilités: | ||
| + | * on crée un fichier '' | ||
| + | * on crée un dossier '' | ||
| + | |||
| + | La deuxième méthode est conseillée car elle offre un espace dédié au composant (dossier '' | ||
| + | |||
| + | #### Comment faire un composant ? | ||
| + | |||
| + | Un composant est avant tout une fonction **JS** (fléchée ou déclarée) retournant du **JSX** (un mélange de **JS** et de balises **HTML** en quelques sortes). Un composant peut renvoyer une portion d’interface, | ||
| + | |||
| + | Je vous invite à jeter un coup d' | ||
| + | |||
| + | Ici on va rester simple avec un composant avec quelques **props**: | ||
| + | |||
| + | |||
| + | ``` | ||
| + | export const Input = (props) => { | ||
| + | const { label, id, ...inputProps } = props; | ||
| + | |||
| + | return ( | ||
| + | <div className=" | ||
| + | | ||
| + | < | ||
| + | htmlFor={id} | ||
| + | className=" | ||
| + | > | ||
| + | {label} | ||
| + | </ | ||
| + | } | ||
| + | <input | ||
| + | id={id} | ||
| + | className=" | ||
| + | { ...inputProps} | ||
| + | /> | ||
| + | </ | ||
| + | ); | ||
| + | }; | ||
| + | ``` | ||
| + | |||
| + | Utilisons maintenant ce composant dans une page de connexion par exemple ('' | ||
| + | |||
| + | ``` | ||
| + | import { Input } from " | ||
| + | |||
| + | export const Login = () => { | ||
| + | return ( | ||
| + | <div className=" | ||
| + | <form className=" | ||
| + | <Input | ||
| + | id=" | ||
| + | label=" | ||
| + | type=" | ||
| + | placeholder=" | ||
| + | /> | ||
| + | <Input | ||
| + | id=" | ||
| + | label=" | ||
| + | type=" | ||
| + | placeholder=" | ||
| + | /> | ||
| + | <button className=" | ||
| + | Connexion | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | ); | ||
| + | }; | ||
| + | ``` | ||
| + | |||
| + | Vous entrevoyez un peu le principe maintenant ? Les composants sont réutilisables et peuvent s' | ||
| + | |||
| + | Il n'y a pas vraiment de convention en ce qui concerne l' | ||
| + | |||
| + | Bon assez parlé ! Et si on essayait d' | ||
| + | |||
| + | Pour çà, on peut ouvrir le fichier '' | ||
| + | |||
| + | ``` | ||
| + | import { Login } from " | ||
| + | |||
| + | export const App = () => { | ||
| + | return ( | ||
| + | <Login /> | ||
| + | ); | ||
| + | }; | ||
| + | ``` | ||
| + | |||
| + | On lance la commande '' | ||