Skip to content

Commit c8d8b0c

Browse files
lbelavoirtdd
andauthored
Apply suggestions from code review
Co-Authored-By: Christophe Porteneuve <tdd@tddsworld.com>
1 parent 93cab87 commit c8d8b0c

File tree

1 file changed

+48
-48
lines changed

1 file changed

+48
-48
lines changed

content/blog/2017-09-08-dom-attributes-in-react-16.md

+48-48
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,38 @@
11
---
2-
title: "Les attributs du DOM dans React 16"
2+
title: "Les attributs DOM dans React 16"
33
author: [gaearon]
44
---
55

6-
Dans le passé, React ignorait les attributs DOM inconnus. Si vous écriviez du JSX avec un attribut que React ne reconnaissait pas, React le sautait tout simplement. Par exemple, ceci:
6+
Par le passé, React ignorait les attributs DOM inconnus. Si vous écriviez du JSX avec un attribut que React ne reconnaissait pas, React le sautait tout simplement. Par exemple, le code suivant :
77

88
```js
9-
// Votre code:
9+
// Votre code :
1010
<div mycustomattribute="quelque chose" />
1111
```
1212

13-
rendrait une div vide dans le DOM avec React 15:
13+
produirait une div vide dans le DOM avec React 15 :
1414

1515
```js
16-
// rendu de React 15:
16+
// rendu de React 15 :
1717
<div />
1818
```
1919

20-
Dans React 16, nous apportons un changement. Maintenant, tous les attributs inconnus se retrouveront dans le DOM:
20+
Avec React 16, nous apportons un changement. Désormais, tous les attributs inconnus se retrouveront dans le DOM :
2121

2222
```js
23-
// rendu de React 16:
23+
// rendu de React 16 :
2424
<div mycustomattribute="quelque chose" />
2525
```
2626

27-
## Pourquoi changeons-nous cela? {#pourquoi-changeons-nous-cela}
27+
## Pourquoi changer ça ? {#why-are-we-changing-this}
2828

29-
React a toujours fourni une API Javascript centrée sur le DOM. Étant donné que les composants React prennent souvent à la fois des propriétés personnalisées et relative au DOM, il est logique que React utilise la convention `camelCase` tout comme les API DOM:
29+
React a toujours fourni une API pour le DOM centrée sur Javascript. Étant donné que les composants React acceptent souvent à la fois des propriétés personnalisées et d’autres liées au DOM, il est logique que React utilise la convention `camelCase` tout comme les API DOM :
3030

3131
```js
3232
<div tabIndex="-1" />
3333
```
3434

35-
Cela n'a pas changé. Cependant, la façon dont nous l'avons appliqué dans le passé nous a obligés à maintenir une liste blanche de tous les attributs DOM React valides dans le paquet:
35+
Cet aspect n'a pas changé. Cependant, la façon dont nous l'avons géré par le passé nous a obligés à maintenir une liste blanche de tous les attributs DOM React valides dans le paquet :
3636

3737
```js
3838
// ...
@@ -43,129 +43,129 @@ title: 'title',
4343
// ...
4444
```
4545

46-
Cela avait deux inconvénients:
46+
Cette approche présentait deux inconvénients :
4747

48-
* Vous ne pouviez pas [passer un attribut personnalisé](https://github.com/facebook/react/issues/140). Cela est utile pour fournir des attributs non standard spécifiques au navigateur, essayer de nouvelles API DOM et s'intégrer à des bibliothèques tierces avisées.
48+
* Vous ne pouviez pas [passer un attribut personnalisé](https://github.com/facebook/react/issues/140). C’est pourtant utile pour fournir des attributs non standard spécifiques au navigateur, essayer de nouvelles API DOM et s'intégrer avec des bibliothèques tierces imposant certaines contraintes.
4949

50-
* La liste d'attributs n'a cessé de croître au fil du temps, mais la plupart des noms d'attributs canoniques React sont déjà valides dans le DOM. La suppression de la majorité de liste blanche nous a aidé à diminuer un peu la taille du paquet.
50+
* La liste d'attributs n'a cessé de croître au fil du temps, mais la plupart des noms d'attributs canoniques React sont déjà valides dans le DOM. Retirer la majorité de la liste blanche nous a aidés à diminuer un peu la taille du paquet.
5151

5252
Avec la nouvelle approche, ces deux problèmes sont résolus. Avec React 16, vous pouvez désormais transmettre des attributs personnalisés à tous les éléments HTML et SVG, et React n'a pas à inclure de liste blanche d'attributs dans sa version de production.
5353

54-
** Notez que vous devez toujours utiliser la dénomination canonique React pour les attributs connus: **
54+
** Notez que vous devez toujours utiliser la nomenclature canonique React pour les attributs connus :**
5555

5656
```js
5757
// Oui, s'il vous plaît
5858
<div tabIndex="-1" />
5959

60-
// Attention: propriété du DOM invalide `tabindex`. Vous voulez certainement dire `tabIndex`?
60+
// Attention : propriété du DOM invalide `tabindex`. Vous voulez certainement dire `tabIndex` ?
6161
<div tabindex="-1" />
6262
```
6363

6464
En d'autres termes, la façon dont vous utilisez les composants du DOM dans React n'a pas changé, mais vous disposez désormais de nouvelles fonctionnalités.
6565

66-
## Dois-je conserver les données dans des attributs personnalisés ? {#dois-je-conserver-les-donnees-dans-des-attributs-personnalises}
66+
## Devrais-je stocker des données dans des attributs personnalisés ? {#should-i-keep-data-in-custom-attributes}
6767

68-
Non. Nous ne vous encourageons pas à conserver les données dans les attributs DOM. Même si vous le devez, les attributs `data-` sont probablement une meilleure approche, mais dans la plupart des cas, les données doivent être conservées dans l'état du composant React ou dans des collections externes.
68+
Non. Nous vous déconseillons de stocker des données dans les attributs DOM. Même si vous en aviez besoin, les attributs `data-` constituent probablement une meilleure approche, mais dans la plupart des cas, les données devraient être conservées dans l'état du composant React ou dans des *stores* externes.
6969

7070
Cependant, la nouvelle fonctionnalité est pratique si vous devez utiliser un attribut DOM non standard ou nouveau, ou si vous devez intégrer une bibliothèque tierce qui s'appuie sur de tels attributs.
7171

72-
## Attributs Data et ARIA {#Attributs-data-et-aria}
72+
## Attributs `data-` et ARIA {#data-and-aria-attributes}
7373

74-
Comme auparavant, React vous permet de passer librement les attributs `data-` et `aria-`:
74+
Comme auparavant, React vous permet de passer librement les attributs `data-` et `aria-` :
7575

7676
```js
7777
<div data-foo="42" />
7878
<button aria-label="Fermer" onClick={onClose} />
7979
```
8080

81-
Cela n'a pas changé.
81+
Ce point n'a pas changé.
8282

83-
[L'accessibilité](/docs/accessibility.html) est très importante, donc même si React 16 transmet tous les attributs, il valide toujours que les accessoires `aria-` aient des noms corrects en mode développement, tout comme React 15.
83+
[L'accessibilité](/docs/accessibility.html) est très importante, donc même si React 16 transmet tous les attributs, il vérifie toujours que les *props* `aria-` ont des noms corrects en mode développement, tout comme React 15.
8484

85-
## Chemin de migration {#chemin-de-migration}
85+
## Méthodologie de migration {#migration-path}
8686

8787
Nous avons inclus [un avertissement concernant les attributs inconnus](/warnings/unknown-prop.html) depuis [React 15.2.0](https://github.com/facebook/react/releases/tag/v15.2.0) qui est paru il y a plus d'un an. La grande majorité des bibliothèques tierces ont déjà mis à jour leur code. Si votre application ne génère pas d'avertissements avec React 15.2.0 ou une version ultérieure, ce changement ne devrait pas nécessiter de modifications dans votre code.
8888

89-
Si vous envoyez accidentellement des propriétés non-DOM aux composants du DOM, avec React 16, vous commencerez à voir ces attributs dans le DOM, comme par exemple:
89+
Si vous envoyez accidentellement des propriétés non-DOM aux composants du DOM, avec React 16, vous commencerez à voir ces attributs dans le DOM, comme par exemple :
9090

9191
```js
9292
<div myData='[Object object]' />
9393
```
9494

95-
D'une certaine manière c'est peu risqué (le navigateur les ignorera) mais nous vous recommandons de corriger ces cas lorsque vous les voyez. Un danger potentiel est possible si vous passez un objet qui implémente une méthode personnalisée `toString ()` ou `valueOf ()` qui retourne. Un autre problème possible est que les attributs HTML hérités comme `align` et `valign` seront désormais transmis au DOM. Ils étaient auparavant enlevés parce que React ne les prenait pas en charge.
95+
En un sens c'est peu risqué (le navigateur les ignorera) mais nous vous conseillons de corriger ces cas lorsque vous les voyez. Un risque potentiel consiste à passer un objet qui implémente une méthode personnalisée `toString ()` ou `valueOf ()` qui lèverait une exception. Un autre problème possible vient du fait que les attributs HTML dépréciés comme `align` et `valign` sont désormais transmis au DOM. Ils étaient auparavant filtrés parce que React ne les prenait pas en charge.
9696

9797
Pour éviter ces problèmes, nous vous suggérons de corriger les avertissements que vous voyez dans React 15 avant de passer à React 16.
9898

99-
## Changements dans les détails {#changements-dans-les-details}
99+
## Détail des changements {#changes-in-detail}
100100

101-
Nous avons apporté quelques autres modifications pour rendre le comportement plus prévisible et vous aider à vous assurer que vous ne commettez pas d'erreurs. Il n'est pas prévu que ces changements risquent de perturber les applications du monde réel.
101+
Nous avons apporté quelques autres modifications pour rendre le comportement plus prévisible et vous aider à vous assurer que vous ne commettez pas d'erreurs. Ces changements ne devraient pas perturber les applications en production.
102102

103103
**Ces modifications n'affectent que les composants DOM comme `<div>`, pas vos propres composants.**
104104

105105
En voici une liste détaillée.
106106

107-
* **Attributs inconnus avec chaîne, nombre et valeurs d'objet:**
107+
* **Attributs inconnus dont la valeur est une chaîne de caractère, un nombre ou un objet :**
108108

109109
```js
110110
<div mycustomattribute="valeur" />
111111
<div mycustomattribute={42} />
112-
<div mycustomattribute={monObjet} />
112+
<div mycustomattribute={myObject} />
113113
```
114114

115-
React 15: montre un avertissement et les ignore.
116-
    React 16: convertit les valeurs en chaînes et les transmet.
115+
React 15 : génère un avertissement et les ignore.
116+
    React 16 : convertit les valeurs en chaînes de caractères et les transmet.
117117

118-
*Remarque: les attributs commençant par `on` ne sont pas transmis comme exception, car cela pourrait devenir une faille de sécurité potentielle.*
118+
*Remarque : les attributs commençant par `on` constituent une exception et ne sont pas transmis, car ils constituent une faille de sécurité potentielle.*
119119

120-
* **Attributs connus avec un nom canonique React différent:**
120+
* **Attributs connus avec un nom canonique React différent :**
121121

122122
```js
123123
<div tabindex="-1" />
124124
<div class="salut" />
125125
```
126126

127-
React 15: montre un avertissement et les ignore.
128-
    React 16: montre un avertissement mais convertit les valeurs en chaînes et les transmet.
127+
React 15 : génère un avertissement et les ignore.
128+
    React 16 : génère un avertissement mais convertit les valeurs en chaînes de caractères et les transmet.
129129

130-
*Remarque: utilisez toujours la dénomination canonique React pour tous les attributs pris en charge.*
130+
*Remarque : utilisez toujours la nomenclature canonique de React pour les attributs pris en charge.*
131131

132-
* **Attributs non booléens avec des valeurs booléennes:**
132+
* **Attributs non booléens avec des valeurs booléennes :**
133133

134134
```js
135135
<div className={false} />
136136
```
137137

138-
React 15: convertit les booléens en chaînes et les fait passer.
139-
React 16: montre un avertissement et les ignore.
138+
React 15 : convertit les booléens en chaînes de caractères et les transmet.
139+
React 16 : génère un avertissement et les ignore.
140140

141-
* **Attributs non événementiels avec des fonctions comme valeur:**
141+
* **Attributs non événementiels avec des fonctions comme valeur :**
142142

143143
```js
144144
<div className={function() {}} />
145145
```
146146

147-
React 15: convertit les fonctions en chaînes et les fait passer.
148-
React 16: montre un avertissement et les ignore.
147+
React 15 : convertit les fonctions en chaînes de caractères et les transmet.
148+
React 16 : génère un avertissement et les ignore.
149149

150-
* **Attributs avec des valeurs de symbole:**
150+
* **Attributs avec des symboles comme valeur :**
151151

152152
```js
153153
<div className={Symbol('foo')} />
154154
```
155155

156-
React 15: plante.
157-
React 16: montre un avertissement et les ignore.
156+
React 15 : plante.
157+
React 16 : génère un avertissement et les ignore.
158158

159-
* **Attributs avec des valeurs `NaN`:**
159+
* **Attributs avec des valeurs `NaN` :**
160160

161161
```js
162162
<div tabIndex={0 / 0} />
163163
```
164164

165-
React 15: convertit les `NaN` en chaînes et les fait passer.
166-
React 15: convertit les `NaN` en chaînes et les fait passer avec un avertissement.
165+
React 15 : convertit les `NaN` en chaînes de caractères et les transmet.
166+
React 16 : convertit les `NaN` en chaînes de caractères et les transmet mais avec un avertissement.
167167

168-
While testing this release, we have also [created an automatically generated table](https://github.com/facebook/react/blob/master/fixtures/attribute-behavior/AttributeTableSnapshot.md) for all known attributes to track potential regressions.
168+
En testant cette version, nous avons aussi [créé un tableau généré automatiquement](https://github.com/facebook/react/blob/master/fixtures/attribute-behavior/AttributeTableSnapshot.md) pour tous les attributs connus afin de pister d’éventuelles régressions.
169169

170170
## Try It! {#try-it}
171171

0 commit comments

Comments
 (0)