Skip to content

Commit 1b4d0a7

Browse files
authored
Translation of the “Introducing JSX” page
introduction-jsx translation
2 parents d4b7e65 + 98556dc commit 1b4d0a7

File tree

1 file changed

+56
-55
lines changed

1 file changed

+56
-55
lines changed

content/docs/introducing-jsx.md

Lines changed: 56 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,64 @@
11
---
22
id: introducing-jsx
3-
title: Introducing JSX
3+
title: Introduction à JSX
44
permalink: docs/introducing-jsx.html
55
prev: hello-world.html
66
next: rendering-elements.html
77
---
88

9-
Consider this variable declaration:
9+
Observez cette déclaration de variable :
1010

1111
```js
12-
const element = <h1>Hello, world!</h1>;
12+
const element = <h1>Bonjour, monde !</h1>;
1313
```
1414

15-
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.
1616

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.
1818

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.
2020

21-
### Why JSX? {#why-jsx}
21+
### Pourquoi JSX ? {#why-jsx}
2222

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.
2424

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.
2626

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.
2828

29-
With that out of the way, let's get started!
29+
Ceci étant posé, commençons !
3030

31-
### Embedding Expressions in JSX {#embedding-expressions-in-jsx}
31+
### Utiliser des expressions dans JSX {#embedding-expressions-in-jsx}
3232

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 :
3434

3535
```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>;
3838
3939
ReactDOM.render(
4040
element,
4141
document.getElementById('root')
4242
);
4343
```
4444

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.
4646

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>`.
4848

4949
```js{12}
5050
function formatName(user) {
5151
return user.firstName + ' ' + user.lastName;
5252
}
5353
5454
const user = {
55-
firstName: 'Harper',
56-
lastName: 'Perez'
55+
firstName: 'Kylian',
56+
lastName: 'Mbappé'
5757
};
5858
5959
const element = (
6060
<h1>
61-
Hello, {formatName(user)}!
61+
Bonjour, {formatName(user)} !
6262
</h1>
6363
);
6464
@@ -68,88 +68,89 @@ ReactDOM.render(
6868
);
6969
```
7070

71-
[](codepen://introducing-jsx)
71+
**[Essayer sur CodePen](codepen://introducing-jsx)**
7272

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.
7474

75-
### JSX is an Expression Too {#jsx-is-an-expression-too}
75+
### JSX n’est rien d’autre qu’une expression {#jsx-is-an-expression-too}
7676

77-
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.
7878

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 :
8080

8181
```js{3,5}
8282
function getGreeting(user) {
8383
if (user) {
84-
return <h1>Hello, {formatName(user)}!</h1>;
84+
return <h1>Bonjour, {formatName(user)} !</h1>;
8585
}
86-
return <h1>Hello, Stranger.</h1>;
86+
return <h1>Bonjour, Belle Inconnue.</h1>;
8787
}
8888
```
8989

90-
### Specifying Attributes with JSX {#specifying-attributes-with-jsx}
90+
### Spécifier des attributs en JSX {#specifying-attributes-with-jsx}
9191

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 :
9393

9494
```js
9595
const element = <div tabIndex="0"></div>;
9696
```
9797

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 :
9999

100100
```js
101101
const element = <img src={user.avatarUrl}></img>;
102102
```
103103

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.
105105

106-
>**Warning:**
106+
>**Attention :**
107107
>
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.
109109
>
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).
111111
112-
### Specifying Children with JSX {#specifying-children-with-jsx}
112+
### Spécifier des éléments enfants en JSX {#specifying-children-with-jsx}
113113

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 :
115115

116116
```js
117117
const element = <img src={user.avatarUrl} />;
118118
```
119119

120-
JSX tags may contain children:
120+
Les balises JSX peuvent contenir des enfants :
121121

122122
```js
123123
const element = (
124124
<div>
125-
<h1>Hello!</h1>
126-
<h2>Good to see you here.</h2>
125+
<h1>Bonjour !</h1>
126+
<h2>Content de te voir ici.</h2>
127127
</div>
128128
);
129129
```
130130

131-
### JSX Prevents Injection Attacks {#jsx-prevents-injection-attacks}
131+
### JSX empêche les attaques d’injection {#jsx-prevents-injection-attacks}
132132

133-
It is safe to embed user input in JSX:
133+
Vous ne risquez rien en utilisant une saisie utilisateur dans JSX :
134134

135135
```js
136136
const title = response.potentiallyMaliciousInput;
137-
// This is safe:
137+
// Ceci est sans risque :
138138
const element = <h1>{title}</h1>;
139139
```
140140

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.
142141

143-
### JSX Represents Objects {#jsx-represents-objects}
142+
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).
144143

145-
Babel compiles JSX down to `React.createElement()` calls.
144+
### JSX représente des objets {#jsx-represents-objects}
146145

147-
These two examples are identical:
146+
Babel compile JSX vers des appels à `React.createElement()`.
147+
148+
Ces deux exemples sont identiques :
148149

149150
```js
150151
const element = (
151152
<h1 className="greeting">
152-
Hello, world!
153+
Bonjour, monde !
153154
</h1>
154155
);
155156
```
@@ -158,27 +159,27 @@ const element = (
158159
const element = React.createElement(
159160
'h1',
160161
{className: 'greeting'},
161-
'Hello, world!'
162+
'Bonjour, monde !'
162163
);
163164
```
164165

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 :
166167

167168
```js
168-
// Note: this structure is simplified
169+
// Remarque : cette structure est simplifiée
169170
const element = {
170171
type: 'h1',
171172
props: {
172173
className: 'greeting',
173-
children: 'Hello, world!'
174+
children: 'Bonjour, monde !'
174175
}
175176
};
176177
```
177178

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.
179180

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.
181182

182-
>**Tip:**
183+
>**Astuce :**
183184
>
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

Comments
 (0)