Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# Introduction à React
---
## Composants
<small>Exemple de composant :</small>
```jsx []
import React from 'react';
function HelloWorld() {
return <h1>Hello, World!</h1>;
}
export default HelloWorld;
```
---
## Composants
<small>Exemple d'utilisation d'un composant :</small>
```jsx [5-11]
import React from 'react';
import ReactDOM from 'react-dom';
import HelloWorld from './HelloWorld';
function App() {
return (
<div>
<HelloWorld />
</div>
);
}
ReactDOM.render(<App />, document.getElementById('root'));
```
---
## Props
<small>Les props sont des arguments passés à des composants.</small>
```jsx []
import React from 'react';
function Hello(props) {
return <h1>Hello, {props.name}!</h1>;
}
export default Hello;
```
```jsx []
<Hello name="Alice" />
```
---
## Gestion d'état avec useState
<small>useState permet aux composants de gérer leur état.</small>
```jsx [1-15|4|8|10]
import React, { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>Compteur: {count}</p>
<button
onClick={() => setCount(count + 1)}>
Incrémenter
</button>
</div>
);
}
```
---
## Effets avec useEffect
<small>useEffect permet d'effectuer des opérations en réponse à des changements dans le composant.</small>
```jsx []
import React, { useState, useEffect } from 'react';
function Timer() {
const [seconds, setSeconds] = useState(0);
useEffect(() => {
const timer = setInterval(() => {
setSeconds(seconds + 1);
}, 1000);
return () => clearInterval(timer);
}, [seconds]);
return <p>Temps écoulé: {seconds} secondes</p>;
}
```
---
## Contexte en React
<small>Le contexte permet de transmettre des données à travers l'arbre des composants sans avoir besoin de passer explicitement des props à chaque niveau.</small>
```jsx [1-15|4|6-12|14]
import React, { createContext, useContext } from 'react';
// Création du contexte
const ThemeContext = createContext('light');
// Composant fournissant le contexte
function App() {
return (
<ThemeContext.Provider value="dark">
<Toolbar />
</ThemeContext.Provider>
);
}
// Composant consommant le contexte
function Toolbar() {
return (
<div>
<ThemedButton />
</div>
);
}
// Composant consommant le contexte avec le hook useContext
function ThemedButton() {
const theme = useContext(ThemeContext);
return <button>{theme}</button>;
}
export default App;
```