Premier projet React
Pré-requis: Node et npm installés.
Pour créer un projet React, nous allons utiliser l’outil Vite :
npm create vite@latest- Dans Project name, tapez un nom pour votre projet
- Dans Select a framework, sélectionnez
React - Dans Select a variant, sélectionnez
JavaScript
Ensuite, rendez vous dans le répertoire nouvellement crée, lancez la commande npm install puis npm run dev :
cd NOM_DU_PROJET
npm install
npm run devStructure d’un projet React
Le répertoire où l’application a été créée contient trois sous-répertoires:
public: contient les fichiers accessibles directementsrc: contient le code de l’application (JSX, CSS, images)node_modules: contient les dépendances externes du projet. Chaque fois que nous installons un paquet externe vianpm(comme lorsqu’on a utilisé la commandenpm install), il est stocké dans ce répertoire.
index.html
Ce fichier contient la structure HTML de base.
Le <div id="root"> est le point d’entrée de React.
main.jsx
Ce fichier initialise l’application React et indique où afficher le composant principal.
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import App from './App.jsx'
createRoot(document.getElementById('root')).render(
<StrictMode>
<App />
</StrictMode>,
)Le code commence par importer deux éléments de la librairie React, un fichier de style CSS ainsi qu’une fonction App à partir du fichier App.jsx.
Ensuite, le code appelle la fonction createRoot(). Cette fonction prend en argument l’élément <div> que nous avons vu dans le fichier index.html.
Enfin, le résultat appelle la fonction render() avec (entre autres) l’élément <App /> comme paramètre.
Ceci a pour effet d’appeler la fonction App() du fichier App.jsx. C’est cette fonction qui contient le code HTML qui sera affiché dans la page.
App.jsx
Avec React, les pages HTML sont générées à partir de fonctions JavaScript.
La fonction App() retourne les éléments qui seront immédiatement rattachés au <div> dont l’id est root:
function App() {
const [count, setCount] = useState(0)
return (
<>
<div>
<a href="https://vite.dev" target="_blank">
<img src={viteLogo} className="logo" alt="Vite logo" />
</a>
<a href="https://react.dev" target="_blank">
<img src={reactLogo} className="logo react" alt="React logo" />
</a>
</div>
<h1>Vite + React</h1>
<div className="card">
<button onClick={() => setCount((count) => count + 1)}>
count is {count}
</button>
<p>
Edit <code>src/App.jsx</code> and save to test HMR
</p>
</div>
<p className="read-the-docs">
Click on the Vite and React logos to learn more
</p>
</>
)
}Quelques remarques au sujet de l’exemple précédent:
- Le code est similaire à du JavaScript
- L’extension du fichier n’est pas
.jsmais.jsx - Le HTML retourné par la fonction n’est pas entre guillemets
- L’attribut HTML
classs’appelle iciclassName - Ces particulartiés viennent du fait que le langage utilisé dans cette page n’est pas exactement du JavaScript, mais une extension de JavaScript qu’on nomme JSX.