Skip to content

Commit 2ffa9a6

Browse files
committed
copy(cloneElement): final review pass
1 parent 4505c3b commit 2ffa9a6

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

src/content/reference/react/cloneElement.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ title: cloneElement
44

55
<Pitfall>
66

7-
Il est rare de recourir à `cloneElement`, qui est susceptible de fragiliser votre code. [Découvrez les alternatives](#alternatives).
7+
Il est rare de recourir à `cloneElement`, car cette API est susceptible de fragiliser votre code. [Découvrez les alternatives](#alternatives).
88

99
</Pitfall>
1010

1111
<Intro>
1212

13-
`cloneElement` vous permet de vous permet de créer un élément React en vous basant sur un élément existant.
13+
`cloneElement` vous permet de créer un élément React en vous basant sur un élément existant.
1414

1515
```js
1616
const clonedElement = cloneElement(element, props, ...children)
@@ -26,7 +26,7 @@ const clonedElement = cloneElement(element, props, ...children)
2626

2727
### `cloneElement(element, props, ...children)` {/*cloneelement*/}
2828

29-
Appelez `cloneElement` pour créer un élément React basé sur `element`, mais avec des `props` et `children` distincts :
29+
Appelez `cloneElement` pour créer un élément React basé sur `element`, mais avec des `props` (y compris `children`) distincts :
3030

3131
```js
3232
import { cloneElement } from 'react';
@@ -40,25 +40,25 @@ const clonedElement = cloneElement(
4040
'Au revoir'
4141
);
4242

43-
console.log(clonedElement); // <Row title="Greeting">Au revoir</Row>
43+
console.log(clonedElement); // <Row title="Greeting" isHighlighted={true}>Au revoir</Row>
4444
```
4545

4646
[Voir d'autres exemples ci-dessous](#usage).
4747

4848
#### Paramètres {/*parameters*/}
4949

50-
* `element` : l'argument `element` doit être un élément React valide. Il peut par exemple s'agir d'un nœud JSX tel que `<Something />`, du résultat d'un appel à [`createElement`](/reference/react/createElement) ou du résultat d'un autre appel à `cloneElement`.
50+
* `element` : l'argument `element` doit être un élément React valide. Il peut par exemple s'agir d'un nœud JSX tel que `<Something />` ou du résultat d'un appel à [`createElement`](/reference/react/createElement) voire d'un autre appel à `cloneElement`.
5151

52-
* `props` : l'argument `props` doit être soit un objet, soit `null`. Si vous passez `null`, l'élément cloné conservera toutes les `element.props` d'origine. Dans le cas contraire, pour chaque prop de l'objet `props`, l'élément renvoyé « favorisera » la valeur issue de `props` plutôt que celle issue d'`element.props`. Le reste des props seront rempleis à partir des `element.props` d'origine. Si vous passez `props.key` ou `props.ref`, elles remplaceront également celles d'origine.
52+
* `props` : l'argument `props` doit être soit un objet, soit `null`. Si vous passez `null`, l'élément cloné conservera toutes les `element.props` d'origine. Dans le cas contraire, pour chaque prop de l'objet `props`, l'élément renvoyé « favorisera » la valeur issue de `props` plutôt que celle issue d'`element.props`. Le reste des props seront remplies à partir des `element.props` d'origine. Si vous passez `props.key` ou `props.ref`, elles remplaceront également celles d'origine.
5353

54-
* `...children` **optionels** : un nombre quelconque de nœuds enfants. Il peut s'agir de n'importe quel nœuds React, y compris des éléments React, des chaînes de caractères, des nombres, des [portails](/reference/react-dom/createPortal), des nœuds vides (`null`, `undefined`, `true` et `false`) et des tableaux de nœuds React. Si vous ne passez aucun argument `...children`, les `element.props.children` d'origine seront préservés.
54+
* `...children` **optionels** : un nombre quelconque de nœuds enfants. Il peut s'agir de n'importe quels nœuds React, y compris des éléments React, des chaînes de caractères, des nombres, des [portails](/reference/react-dom/createPortal), des nœuds vides (`null`, `undefined`, `true` et `false`) et des tableaux de nœuds React. Si vous ne passez aucun argument `...children`, les `element.props.children` d'origine seront préservés.
5555

5656
#### Valeur renvoyée {/*returns*/}
5757

58-
`cloneElement` renvoie un objet d'élément React avec quelques propriétés :
58+
`cloneElement` renvoie un objet descripteur d'élément React avec quelques propriétés :
5959

6060
* `type` : identique à `element.type`.
61-
* `props` : le résultat d'une fusion superficielle de `element.props` avec les `props` prioritaires que vous auriez passées.
61+
* `props` : le résultat d'une fusion superficielle de `element.props` avec les `props` prioritaires que vous auriez éventuellement passées.
6262
* `ref` : la `element.ref` d'origine, à moins qu'elle n'ait été remplacée par `props.ref`.
6363
* `key` : la `element.key` d'origine, à moins qu'elle n'ait été remplacée par `props.key`.
6464

@@ -78,7 +78,7 @@ En général, vous renverrez l'élément depuis votre composant, ou en ferez l'e
7878

7979
### Surcharger les props d'un élément {/*overriding-props-of-an-element*/}
8080

81-
Pour surcharger les props d'un <CodeStep step={1}>élément React</CodeStep>, passez-le à `cloneElement` avec les <CodeStep step={2}>props que vous voulez remplacer</CodeStep> :
81+
Pour surcharger les props d'un <CodeStep step={1}>élément React</CodeStep>, passez-le à `cloneElement`, conjointement aux <CodeStep step={2}>props que vous souhaitez remplacer</CodeStep> :
8282

8383
```js [[1, 5, "<Row title=\\"Greeting\\" />"], [2, 6, "{ isHighlighted: true }"], [3, 4, "clonedElement"]]
8484
import { cloneElement } from 'react';
@@ -94,7 +94,7 @@ Ici, l'<CodeStep step={3}>élément cloné</CodeStep> sera `<Row title="Greeting
9494

9595
**Déroulons un exemple afin de comprendre en quoi c'est utile.**
9696

97-
Imaginons qu'un composant `List` affiche ses [`children`](/learn/passing-props-to-a-component#passing-jsx-as-children) comme une liste de ligne sélectionnables avec un bouton « Suivant » qui modifie la ligne sélectionnée. Le composant `List` doit pouvoir afficher la `Row` sélectionnée d'une façon différente, il clone donc chaque enfant `<Row>` qu'il reçoit, et y ajoute une prop supplémentaire `isHighlighted: true` ou `isHighlighted: false` :
97+
Imaginons qu'un composant `List` affiche ses [`children`](/learn/passing-props-to-a-component#passing-jsx-as-children) comme une liste de lignes sélectionnables avec un bouton « Suivant » qui modifie la ligne sélectionnée. Le composant `List` doit pouvoir afficher la `Row` sélectionnée d'une façon différente, il clone donc chaque enfant `<Row>` qu'il reçoit, et y ajoute une prop supplémentaire `isHighlighted: true` ou `isHighlighted: false` :
9898

9999
```js {6-8}
100100
export default function List({ children }) {
@@ -236,7 +236,7 @@ En résumé, la `List` a cloné les éléments `<Row />` qu'elle a reçus et leu
236236
237237
<Pitfall>
238238
239-
Le clonage des nœuds enfants complexifie le flux de données dans votre appli. Essayez plutôt une des [alternatives](#alternatives).
239+
Le clonage des nœuds enfants complexifie le flux de données dans votre appli : vous devriez donc plutôt essayer une des [alternatives](#alternatives).
240240
241241
</Pitfall>
242242
@@ -259,7 +259,7 @@ export default function List({ items, renderItem }) {
259259
})}
260260
```
261261
262-
La prop `renderItem` est appelée « prop de rendu » parce que c'est une prop indiquant comment faire le rendu de quelque chose. Vous pouvez par exemple passer une implémentation de `renderItem` qui produit une `<Row>` avec la valeur `isHighlighted` reçue :
262+
La prop `renderItem` est appelée « prop de rendu » parce que c'est une prop indiquant *comment* faire le rendu de quelque chose. Vous pouvez par exemple passer une implémentation de `renderItem` qui produit une `<Row>` avec la valeur `isHighlighted` reçue :
263263
264264
```js {3,7}
265265
<List
@@ -403,7 +403,7 @@ Vous pourriez par exemple appeler [`createContext`](/reference/react/createConte
403403
export const HighlightContext = createContext(false);
404404
```
405405
406-
Votre composant `List` puet enrober chaque élément qu'il affiche dans un fournisseur de `HighlightContext` :
406+
Votre composant `List` peut enrober chaque élément qu'il affiche dans un fournisseur de `HighlightContext` :
407407
408408
```js {8,10}
409409
export default function List({ items, renderItem }) {
@@ -420,7 +420,7 @@ export default function List({ items, renderItem }) {
420420
})}
421421
```
422422
423-
Avec cette approche, `Row` n'a même pas besoin de recevoir une prop `isHighlighted`. Il la lit plutôt depuis le contexte :
423+
Avec cette approche, `Row` n'a même pas besoin de recevoir une prop `isHighlighted`. Il la lit plutôt directement depuis le contexte :
424424
425425
```js Row.js {2}
426426
export default function Row({ title }) {
@@ -690,4 +690,4 @@ button {
690690
691691
</Sandpack>
692692
693-
Cette approche est particulièrement utile lorsque vous voulez réutiliser cette logique dans des composants distincts.
693+
Cette approche est particulièrement utile lorsque vous voulez réutiliser une même logique dans des composants distincts.

0 commit comments

Comments
 (0)