You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This funny tag syntax is neither a string nor HTML.
15
+
Cette drôle de syntaxe n'est ni une chaîne de caractères ni du HTML.
16
16
17
-
It is called JSX, and it is a syntax extension to JavaScript. We recommend using it with React to describe what the UI should look like. JSX may remind you of a template language, but it comes with the full power of JavaScript.
17
+
Ça s'appelle du JSX, et c'est une extension syntaxique de JavaScript. Nous recommandons de l'utiliser avec React afin de décrire à quoi devrait ressembler l'interface utilisateur (UI). JSX vous fait sûrement penser à un langage de balisage, mais il recèle toute la puissance de JavaScript.
18
18
19
-
JSX produces React "elements". We will explore rendering them to the DOM in the [next section](/docs/rendering-elements.html). Below, you can find the basics of JSX necessary to get you started.
19
+
JSX produit des « éléments » React. Nous verrons comment les retranscrire dans le DOM dans la [prochaine section](/docs/rendering-elements.html). Dans la suite de ce document, nous verrons les bases de JSX dont vous aurez besoin pour bien démarrer.
20
20
21
-
### Why JSX? {#why-jsx}
21
+
### Pourquoi JSX? {#why-jsx}
22
22
23
-
React embraces the fact that rendering logic is inherently coupled with other UI logic: how events are handled, how the state changes over time, and how the data is prepared for display.
23
+
Le fonctionnement d’une UI conditionnera toujours les logiques de rendu, de la gestion des événements à la préparation des données pour l'affichage, en passant par l'évolution de l'état au fil du temps. React a choisi d'assumer pleinement cet état de fait.
24
24
25
-
Instead of artificially separating *technologies*by putting markup and logic in separate files, React [separates *concerns*](https://en.wikipedia.org/wiki/Separation_of_concerns) with loosely coupled units called "components" that contain both. We will come back to components in a [further section](/docs/components-and-props.html), but if you're not yet comfortable putting markup in JS, [this talk](https://www.youtube.com/watch?v=x7cQ3mrcKaY)might convince you otherwise.
25
+
Au lieu de séparer artificiellement les *technologies*en mettant le balisage et la logique dans des fichiers séparés, React [sépare les *préoccupations*](https://fr.wikipedia.org/wiki/S%C3%A9paration_des_pr%C3%A9occupations) via des unités faiblement couplées appelées « composants », qui contiennent les deux. Nous reviendrons sur les composants dans une [prochaine section](/docs/components-and-props.html), mais si l'idée d’injecter des balises dans du JS vous met mal à l’aise, [cette présentation](https://www.youtube.com/watch?v=x7cQ3mrcKaY)vous fera peut-être changer d'avis.
26
26
27
-
React [doesn't require](/docs/react-without-jsx.html)using JSX, but most people find it helpful as a visual aid when working with UI inside the JavaScript code. It also allows React to show more useful error and warning messages.
27
+
React [ne vous oblige pas](/docs/react-without-jsx.html)à utiliser JSX, mais la plupart des gens y trouvent une aide visuelle quand ils manipulent l'interface utilisateur dans le code JavaScript. Ça permet aussi à React de produire des messages d'erreurs et d'avertissements plus utiles.
28
28
29
-
With that out of the way, let's get started!
29
+
Ceci étant posé, commençons !
30
30
31
-
### Embedding Expressions in JSX {#embedding-expressions-in-jsx}
31
+
### Utiliser des expressions dans JSX {#embedding-expressions-in-jsx}
32
32
33
-
In the example below, we declare a variable called`name`and then use it inside JSX by wrapping it in curly braces:
33
+
Dans l'exemple suivant, nous déclarons une variable appelée`name`et nous l'utilisons ensuite dans JSX en l'encadrant avec des accolades :
34
34
35
35
```js{1,2}
36
-
const name = 'Josh Perez';
37
-
const element = <h1>Hello, {name}</h1>;
36
+
const name = 'Clarisse Agbegnenou';
37
+
const element = <h1>Bonjour, {name}</h1>;
38
38
39
39
ReactDOM.render(
40
40
element,
41
41
document.getElementById('root')
42
42
);
43
43
```
44
44
45
-
You can put any valid [JavaScript expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Expressions)inside the curly braces in JSX. For example, `2 + 2`, `user.firstName`, or`formatName(user)`are all valid JavaScript expressions.
45
+
Vous pouvez utiliser n'importe quelle [expression JavaScript](https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide/Expressions_et_Op%C3%A9rateurs#Expressions)valide dans des accolades en JSX. Par exemple, `2 + 2`, `user.firstName`, ou`formatName(user)`sont toutes des expressions JavaScript valides.
46
46
47
-
In the example below, we embed the result of calling a JavaScript function, `formatName(user)`, into an `<h1>` element.
47
+
Dans l'exemple suivant, on intègre le résultat de l'appel d'une fonction JavaScript, `formatName(user)`, dans un élément `<h1>`.
48
48
49
49
```js{12}
50
50
function formatName(user) {
51
51
return user.firstName + ' ' + user.lastName;
52
52
}
53
53
54
54
const user = {
55
-
firstName: 'Harper',
56
-
lastName: 'Perez'
55
+
firstName: 'Kylian',
56
+
lastName: 'Mbappé'
57
57
};
58
58
59
59
const element = (
60
60
<h1>
61
-
Hello, {formatName(user)}!
61
+
Bonjour, {formatName(user)}!
62
62
</h1>
63
63
);
64
64
@@ -68,88 +68,89 @@ ReactDOM.render(
68
68
);
69
69
```
70
70
71
-
[](codepen://introducing-jsx)
71
+
**[Essayer sur CodePen](codepen://introducing-jsx)**
72
72
73
-
We split JSX over multiple lines for readability. While it isn't required, when doing this, we also recommend wrapping it in parentheses to avoid the pitfalls of [automatic semicolon insertion](http://stackoverflow.com/q/2846283).
73
+
On découple le JSX en plusieurs lignes pour une meilleure lisibilité. Par la même occasion, nous recommandons également de le mettre entre parenthèses afin d'éviter les pièges [d'insertion de point-virgule automatique](http://stackoverflow.com/q/2846283), même si cette pratique n'est pas obligatoire.
74
74
75
-
### JSX is an Expression Too {#jsx-is-an-expression-too}
After compilation, JSX expressions become regular JavaScript function calls and evaluate to JavaScript objects.
77
+
Après la compilation, les expressions JSX deviennent de simples appels de fonctions JavaScript, dont l'évaluation renvoie des objets JavaScript.
78
78
79
-
This means that you can use JSX inside of `if`statements and `for` loops, assign it to variables, accept it as arguments, and return it from functions:
79
+
Ça signifie que vous pouvez utiliser JSX à l'intérieur d'instructions `if`ou de boucles `for`, l'affecter à des variables, l'accepter en tant qu'argument, et le renvoyer depuis des fonctions :
80
80
81
81
```js{3,5}
82
82
function getGreeting(user) {
83
83
if (user) {
84
-
return <h1>Hello, {formatName(user)}!</h1>;
84
+
return <h1>Bonjour, {formatName(user)}!</h1>;
85
85
}
86
-
return <h1>Hello, Stranger.</h1>;
86
+
return <h1>Bonjour, Belle Inconnue.</h1>;
87
87
}
88
88
```
89
89
90
-
### Specifying Attributes with JSX {#specifying-attributes-with-jsx}
90
+
### Spécifier des attributs en JSX {#specifying-attributes-with-jsx}
91
91
92
-
You may use quotes to specify string literals as attributes:
92
+
Vous pouvez utiliser des guillemets pour spécifier des littéraux chaînes de caractères dans les attributs :
93
93
94
94
```js
95
95
constelement=<div tabIndex="0"></div>;
96
96
```
97
97
98
-
You may also use curly braces to embed a JavaScript expression in an attribute:
98
+
Vous pouvez aussi utiliser des accolades pour utiliser une expression JavaScript dans un attribut :
99
99
100
100
```js
101
101
constelement=<img src={user.avatarUrl}></img>;
102
102
```
103
103
104
-
Don't put quotes around curly braces when embedding a JavaScript expression in an attribute. You should either use quotes (for string values) or curly braces (for expressions), but not both in the same attribute.
104
+
Ne mettez pas de guillemets autour des accolades quand vous utilisez une expression JavaScript dans un attribut. Vous pouvez utiliser soit des guillemets (pour des valeurs textuelles) soit des accolades (pour des expressions), mais pas les deux à la fois pour un même attribut.
105
105
106
-
>**Warning:**
106
+
>**Attention :**
107
107
>
108
-
>Since JSX is closer to JavaScript than to HTML, React DOM uses `camelCase`property naming convention instead of HTML attribute names.
108
+
>Dans la mesure où JSX est plus proche de JavaScript que de HTML, React DOM utilise la casse `camelCase`comme convention de nommage des propriétés, au lieu des noms d’attributs HTML.
109
109
>
110
-
>For example, `class`becomes[`className`](https://developer.mozilla.org/en-US/docs/Web/API/Element/className)in JSX, and`tabindex`becomes[`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/tabIndex).
110
+
>Par exemple, `class`devient[`className`](https://developer.mozilla.org/fr/docs/Web/API/Element/className)en JSX, et`tabindex`devient[`tabIndex`](https://developer.mozilla.org/fr/docs/Web/API/HTMLElement/tabIndex).
111
111
112
-
### Specifying Children with JSX {#specifying-children-with-jsx}
112
+
### Spécifier des éléments enfants en JSX {#specifying-children-with-jsx}
113
113
114
-
If a tag is empty, you may close it immediately with`/>`, like XML:
114
+
Si une balise est vide, vous pouvez la fermer immédiatement avec`/>`, comme en XML:
### JSX empêche les attaques d’injection {#jsx-prevents-injection-attacks}
132
132
133
-
It is safe to embed user input in JSX:
133
+
Vous ne risquez rien en utilisant une saisie utilisateur dans JSX:
134
134
135
135
```js
136
136
consttitle=response.potentiallyMaliciousInput;
137
-
//This is safe:
137
+
//Ceci est sans risque :
138
138
constelement=<h1>{title}</h1>;
139
139
```
140
140
141
-
By default, React DOM [escapes](http://stackoverflow.com/questions/7381974/which-characters-need-to-be-escaped-on-html) any values embedded in JSX before rendering them. Thus it ensures that you can never inject anything that's not explicitly written in your application. Everything is converted to a string before being rendered. This helps prevent [XSS (cross-site-scripting)](https://en.wikipedia.org/wiki/Cross-site_scripting) attacks.
Par défaut, React DOM [échappe](http://stackoverflow.com/questions/7381974/which-characters-need-to-be-escaped-on-html) toutes les valeurs intégrées avec JSX avant d’en faire le rendu. Il garantit ainsi que vous ne risquez jamais d’injecter quoi que ce soit d'autre que ce vous avez explicitement écrit dans votre application. Tout est converti en chaîne de caractères avant de produire le rendu. Ça aide à éviter les attaques [XSS (cross-site-scripting)](https://fr.wikipedia.org/wiki/Cross-site_scripting).
144
143
145
-
Babel compiles JSX down to `React.createElement()` calls.
144
+
### JSX représente des objets {#jsx-represents-objects}
146
145
147
-
These two examples are identical:
146
+
Babel compile JSX vers des appels à `React.createElement()`.
147
+
148
+
Ces deux exemples sont identiques :
148
149
149
150
```js
150
151
constelement= (
151
152
<h1 className="greeting">
152
-
Hello, world!
153
+
Bonjour, monde !
153
154
</h1>
154
155
);
155
156
```
@@ -158,27 +159,27 @@ const element = (
158
159
constelement=React.createElement(
159
160
'h1',
160
161
{className:'greeting'},
161
-
'Hello, world!'
162
+
'Bonjour, monde !'
162
163
);
163
164
```
164
165
165
-
`React.createElement()`performs a few checks to help you write bug-free code but essentially it creates an object like this:
166
+
`React.createElement()`effectue quelques vérifications pour vous aider à écrire un code sans bug, mais pour l'essentiel il crée un objet qui ressemble à ceci :
166
167
167
168
```js
168
-
//Note: this structure is simplified
169
+
//Remarque : cette structure est simplifiée
169
170
constelement= {
170
171
type:'h1',
171
172
props: {
172
173
className:'greeting',
173
-
children:'Hello, world!'
174
+
children:'Bonjour, monde !'
174
175
}
175
176
};
176
177
```
177
178
178
-
These objects are called "React elements". You can think of them as descriptions of what you want to see on the screen. React reads these objects and uses them to construct the DOM and keep it up to date.
179
+
Ces objets sont appelés des « éléments React ». Vous pouvez les considérer comme des descriptions de ce que vous voulez voir sur l'écran. React lit ces objets et les utilise pour construire le DOM et le tenir à jour.
179
180
180
-
We will explore rendering React elements to the DOM in the next section.
181
+
Nous explorerons la retranscription des éléments React dans le DOM dans la prochaine section.
181
182
182
-
>**Tip:**
183
+
>**Astuce :**
183
184
>
184
-
>We recommend using the ["Babel" language definition](http://babeljs.io/docs/editors)for your editor of choice so that both ES6 and JSX code is properly highlighted. This website uses the [Oceanic Next](https://labs.voronianski.com/oceanic-next-color-scheme/) color scheme which is compatible with it.
185
+
>Nous recommandons d'utiliser la [définition de langage « Babel »](http://babeljs.io/docs/editors)dans votre éditeur préféré, afin que les codes ES6 et JSX soient correctement colorisés. Ce site utilise le thème de couleurs [Oceanic Next](https://labs.voronianski.com/oceanic-next-color-scheme/), qui est compatible avec ce mode syntaxique.
0 commit comments