Skip to content

Commit 6baa29d

Browse files
committed
copy(ui-as-a-tree): translate up to module deps
1 parent e51af19 commit 6baa29d

1 file changed

Lines changed: 43 additions & 44 deletions

File tree

src/content/learn/understanding-your-ui-as-a-tree.md

Lines changed: 43 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,41 @@
11
---
2-
title: Understanding Your UI as a Tree
2+
title: Votre UI vue comme un arbre
33
---
44

55
<Intro>
66

7-
Your React app is taking shape with many components being nested within each other. How does React keep track of your app's component structure?
7+
Votre appli React prend forme, et de nombreux composants sont imbriqués les uns dans les autres. Comment React garde-t-il trace de la structure de composants de votre appli ?
88

9-
React, and many other UI libraries, model UI as a tree. Thinking of your app as a tree is useful for understanding the relationship between components. This understanding will help you debug future concepts like performance and state management.
9+
React, comme de nombreuses autres bibliothèques d'UI, modélise l'UI comme un arbre. Penser à votre appli comme à un arbre s'avère utile pour comprendre les relations entre les composants. Ça vous aidera à déboguer des questions ultérieures telles que l'optimisation des performances ou la gestion d'état.
1010

1111
</Intro>
1212

1313
<YouWillLearn>
1414

15-
* How React "sees" component structures
16-
* What a render tree is and what it is useful for
17-
* What a module dependency tree is and what it is useful for
15+
* Comment React « voit » les structures de composants
16+
* Ce qu'est un arbre de rendu, et en quoi il est utile
17+
* Ce qu'est un arbre de dépendances de modules, et à quoi il sert
1818

1919
</YouWillLearn>
2020

21-
## Your UI as a tree {/*your-ui-as-a-tree*/}
21+
## Votre UI vue comme un arbre {/*your-ui-as-a-tree*/}
2222

23-
Trees are a relationship model between items and UI is often represented using tree structures. For example, browsers use tree structures to model HTML ([DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model/Introduction)) and CSS ([CSSOM](https://developer.mozilla.org/docs/Web/API/CSS_Object_Model)). Mobile platforms also use trees to represent their view hierarchy.
23+
Les arbres sont un modèle relationnel entre des éléments, et l'UI est souvent représentée au moyen de structures arborescentes. Les navigateurs utilisent par exemple des arbres pour modéliser HTML (le [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model/Introduction)) et CSS (le [CSSOM](https://developer.mozilla.org/docs/Web/API/CSS_Object_Model)). Les plateformes mobiles utilisent aussi des arbres pour représenter leurs hiérarchies de vues.
2424

25-
<Diagram name="preserving_state_dom_tree" height={193} width={864} alt="Diagram with three sections arranged horizontally. In the first section, there are three rectangles stacked vertically, with labels 'Component A', 'Component B', and 'Component C'. Transitioning to the next pane is an arrow with the React logo on top labeled 'React'. The middle section contains a tree of components, with the root labeled 'A' and two children labeled 'B' and 'C'. The next section is again transitioned using an arrow with the React logo on top labeled 'React'. The third and final section is a wireframe of a browser, containing a tree of 8 nodes, which has only a subset highlighted (indicating the subtree from the middle section).">
25+
<Diagram name="preserving_state_dom_tree" height={193} width={864} alt="Un diagramme avec trois sections disposées horizontalement. Dans la première section, on trouve trois rectangles empilés verticalement, avec pour libellés « Composant A », « Composant B » et « Composant C ». Une flèche libellée « React », avec le logo React, fait la transition vers le panneau suivant. La section du milieu contient un arbre de composants, avec une racine libellée « A » et deux enfants libellés « B » et « C ». Une flèche libellée « React DOM », là encore avec le logo React, fait la transition vers le dernier panneau. Cette troisième section représente une maquette du navigateur contenant un arbre avec 8 nœuds, dont seul un sous-ensemble est mis en avant (qui représente l’arbre de la section du milieu).">
2626

27-
React creates a UI tree from your components. In this example, the UI tree is then used to render to the DOM.
27+
React crée un arbre de l’UI à partir de vos composants. Dans cet exemple, l’arbre d’UI est utilisé pour produire le DOM.
2828
</Diagram>
2929

30-
Like browsers and mobile platforms, React also uses tree structures to manage and model the relationship between components in a React app. These trees are useful tools to understand how data flows through a React app and how to optimize rendering and app size.
30+
Tout comme les navigateurs et plateformes mobiles, React utilise des structures de données arborescentes pour gérer et modéliser les relations entre les composants dans une appli React. Ces arbres constituent des outils bien utiles pour comprendre la circulation des données au travers d'une appli React, et voir comment en optimiser le rendu et la taille du code.
3131

32-
## The Render Tree {/*the-render-tree*/}
32+
## L'arbre de rendu {/*the-render-tree*/}
3333

34-
A major feature of components is the ability to compose components of other components. As we [nest components](/learn/your-first-component#nesting-and-organizing-components), we have the concept of parent and child components, where each parent component may itself be a child of another component.
34+
Un aspect fondamental des composants, c'est la composition : la capacité à construire des composants à partir d'autres composants. Lorsque nous [imbriquons des composants](/learn/your-first-component#nesting-and-organizing-components), nous manipulons les concepts de composants parent et enfants, sachant que chaque parent peut lui-même être un enfant d'un autre composant.
3535

36-
When we render a React app, we can model this relationship in a tree, known as the render tree.
36+
Lorsque nous faisons le rendu d'une appli React, nous pouvons modéliser ces relations sous forme d'un arbre, appelé l'arbre de rendu.
3737

38-
Here is a React app that renders inspirational quotes.
38+
Voici une appli React qui affiche des citations inspirantes.
3939

4040
<Sandpack>
4141

@@ -47,7 +47,7 @@ import Copyright from './Copyright';
4747
export default function App() {
4848
return (
4949
<>
50-
<FancyText title text="Get Inspired App" />
50+
<FancyText title text="Une appli pour être inspiré·e" />
5151
<InspirationGenerator>
5252
<Copyright year={2004} />
5353
</InspirationGenerator>
@@ -77,9 +77,9 @@ export default function InspirationGenerator({children}) {
7777

7878
return (
7979
<>
80-
<p>Your inspirational quote is:</p>
80+
<p>Voici de quoi vous inspirer :</p>
8181
<FancyText text={quote} />
82-
<button onClick={next}>Inspire me again</button>
82+
<button onClick={next}>Inspire-moi encore</button>
8383
{children}
8484
</>
8585
);
@@ -94,9 +94,9 @@ export default function Copyright({year}) {
9494

9595
```js quotes.js
9696
export default [
97-
"Don’t let yesterday take up too much of today.” — Will Rogers",
98-
"Ambition is putting a ladder against the sky.",
99-
"A joy that's shared is a joy made double.",
97+
"Ne laisse pas hier occuper trop d’aujourd’hui. — Will Rogers",
98+
"L’ambition, c’est poser une échelle contre le ciel.",
99+
"Une joie partagée compte double.",
100100
];
101101
```
102102

@@ -118,34 +118,33 @@ export default [
118118

119119
</Sandpack>
120120

121-
<Diagram name="render_tree" height={250} width={500} alt="Tree graph with five nodes. Each node represents a component. The root of the tree is App, with two arrows extending from it to 'InspirationGenerator' and 'FancyText'. The arrows are labelled with the word 'renders'. 'InspirationGenerator' node also has two arrows pointing to nodes 'FancyText' and 'Copyright'.">
122-
123-
React creates a *render tree*, a UI tree, composed of the rendered components.
121+
<Diagram name="render_tree" height={250} width={500} alt="Un graphe d’arbre avec cinq nœuds. Chaque nœud représente un composant. La racine de l’arbre est App, avec deux flèches qui en partent vers 'InspirationGenerator' et 'FancyText'. Les flèches portent le descripteur de relation « fait le rendu de ». Le nœud 'InspirationGenerator' a aussi deux flèches qui en partent pour aller vers les nœuds 'FancyText' et 'Copyright'.">
124122

123+
React crée un *arbre de rendu*, un arbre d'UI, constitué des composants dont on a fait le rendu.
125124

126125
</Diagram>
127126

128-
From the example app, we can construct the above render tree.
127+
À partir de l'appli d'exemple, nous pouvons construire l'arbre de rendu ci-dessus.
129128

130-
The tree is composed of nodes, each of which represents a component. `App`, `FancyText`, `Copyright`, to name a few, are all nodes in our tree.
129+
L'arbre est constitué de nœuds, chacun représentant un composant. `App`, `FancyText`, `Copyright`, pour ne nommer qu'eux, sont tous des nœuds de notre arbre.
131130

132-
The root node in a React render tree is the [root component](/learn/importing-and-exporting-components#the-root-component-file) of the app. In this case, the root component is `App` and it is the first component React renders. Each arrow in the tree points from a parent component to a child component.
131+
Le nœud racine dans un arbre de rendu React constitue le [composant racine](/learn/importing-and-exporting-components#the-root-component-file) de l'appli. Dans notre cas, le composant racine est `App`, et c'est le premier composant dont React fera le rendu. Chaque flèche dans l'arbre pointe d'un composant parent vers un composant enfant.
133132

134133
<DeepDive>
135134

136-
#### Where are the HTML tags in the render tree? {/*where-are-the-html-elements-in-the-render-tree*/}
135+
#### Où sont les balises HTML dans l'arbre de rendu ? {/*where-are-the-html-elements-in-the-render-tree*/}
137136

138-
You'll notice in the above render tree, there is no mention of the HTML tags that each component renders. This is because the render tree is only composed of React [components](learn/your-first-component#components-ui-building-blocks).
137+
Vous remarquerez que dans l'arbre de rendu ci-dessus, on ne trouve nulle part les balises HTML dont chaque composant fait le rendu. C'est parce que l'arbre de rendu n'est constitué que de [composants](learn/your-first-component#components-ui-building-blocks) React.
139138

140-
React, as a UI framework, is platform agnostic. On react.dev, we showcase examples that render to the web, which uses HTML markup as its UI primitives. But a React app could just as likely render to a mobile or desktop platform, which may use different UI primitives like [UIView](https://developer.apple.com/documentation/uikit/uiview) or [FrameworkElement](https://learn.microsoft.com/en-us/dotnet/api/system.windows.frameworkelement?view=windowsdesktop-7.0).
139+
React, en tant que framework d'UI, est indépendant de la plateforme. Sur react.dev, nous mettons en avant des exemples qui font leur rendu sur le web, utilisant du balisage HTML pour leurs primitives d'UI. Mais une appli React pourrait tout aussi bien faire son rendu sur une plateforme mobile ou desktop, et recourir alors à d'autres primitives d'UI telles que [UIView](https://developer.apple.com/documentation/uikit/uiview) ou [FrameworkElement](https://learn.microsoft.com/fr-fr/dotnet/api/system.windows.frameworkelement?view=windowsdesktop-7.0).
141140

142-
These platform UI primitives are not a part of React. React render trees can provide insight to our React app regardless of what platform your app renders to.
141+
Ces primitives d'UI spécifiques à une plateforme ne font pas partie de React. Les arbres de rendu de React vous renseignent sur votre appli React quelle que soit la plateforme visée par votre appli.
143142

144143
</DeepDive>
145144

146-
A render tree represents a single render pass of a React application. With [conditional rendering](/learn/conditional-rendering), a parent component may render different children depending on the data passed.
145+
Un arbre de rendu représente une unique passe de rendu d'une application React. Si vous utilisez du [rendu conditionnel](/learn/conditional-rendering), un composant parent pourrait varier les enfants dont il fait le rendu, en fonction des données qu'il reçoit.
147146

148-
We can update the app to conditionally render either an inspirational quote or color.
147+
Nous pouvons mettre à jour l'appli pour qu'elle affiche de façon conditionnelle soit une citation, soit une couleur pour nous inspirer.
149148

150149
<Sandpack>
151150

@@ -157,7 +156,7 @@ import Copyright from './Copyright';
157156
export default function App() {
158157
return (
159158
<>
160-
<FancyText title text="Get Inspired App" />
159+
<FancyText title text="Une appli pour être inspiré·e" />
161160
<InspirationGenerator>
162161
<Copyright year={2004} />
163162
</InspirationGenerator>
@@ -194,12 +193,12 @@ export default function InspirationGenerator({children}) {
194193

195194
return (
196195
<>
197-
<p>Your inspirational {inspiration.type} is:</p>
196+
<p>Voici votre {inspiration.type === 'quote' ? 'citation' : 'couleur'} inspirante :</p>
198197
{inspiration.type === 'quote'
199198
? <FancyText text={inspiration.value} />
200199
: <Color value={inspiration.value} />}
201200

202-
<button onClick={next}>Inspire me again</button>
201+
<button onClick={next}>Inspire-moi encore</button>
203202
{children}
204203
</>
205204
);
@@ -214,11 +213,11 @@ export default function Copyright({year}) {
214213

215214
```js inspirations.js
216215
export default [
217-
{type: 'quote', value: "Don’t let yesterday take up too much of today.” — Will Rogers"},
216+
{type: 'quote', value: "Ne laisse pas hier occuper trop d’aujourd’hui. — Will Rogers"},
218217
{type: 'color', value: "#B73636"},
219-
{type: 'quote', value: "Ambition is putting a ladder against the sky."},
218+
{type: 'quote', value: "L’ambition, c’est poser une échelle contre le ciel."},
220219
{type: 'color', value: "#256266"},
221-
{type: 'quote', value: "A joy that's shared is a joy made double."},
220+
{type: 'quote', value: "Une joie partagée compte double."},
222221
{type: 'color', value: "#F9F2B4"},
223222
];
224223
```
@@ -245,17 +244,17 @@ export default [
245244
```
246245
</Sandpack>
247246

248-
<Diagram name="conditional_render_tree" height={250} width={561} alt="Tree graph with six nodes. The top node of the tree is labelled 'App' with two arrows extending to nodes labelled 'InspirationGenerator' and 'FancyText'. The arrows are solid lines and are labelled with the word 'renders'. 'InspirationGenerator' node also has three arrows. The arrows to nodes 'FancyText' and 'Color' are dashed and labelled with 'renders?'. The last arrow points to the node labelled 'Copyright' and is solid and labelled with 'renders'.">
247+
<Diagram name="conditional_render_tree" height={250} width={561} alt="Un graphe d’arbre avec six nœuds. Le nœud racine de l’arbre est 'App', avec deux flèches qui en partent vers 'InspirationGenerator' et 'FancyText'. Les flèches utilisent un trait continu et portent le descripteur de relation « fait le rendu de ». Le nœud 'InspirationGenerator' a quant à lui trois flèches qui en partent. Celles vers les nœuds 'FancyText' et 'Copyright' utilisent un trait discontinu et portent le descripteur « fait le rendu de ? ». La troisième flèche, qui va vers le nœud 'Copyright', utilise un trait continu et porte le descripteur « fait le rendu de ».">
249248

250-
With conditional rendering, across different renders, the render tree may render different components.
249+
Avec le rendu conditionnel, d'un rendu à l'autre, l'arbre de rendu peut différer entre les composants.
251250

252251
</Diagram>
253252

254-
In this example, depending on what `inspiration.type` is, we may render `<FancyText>` or `<Color>`. The render tree may be different for each render pass.
253+
Dans cet exemple, selon la valeur de `inspiration.type`, nous pouvons afficher soit `<FancyText>` soit `<Color>`. L'arbre de rendu peut être différent d'une passe de rendu à l'autre.
255254

256-
Although render trees may differ across render pases, these trees are generally helpful for identifying what the top-level and leaf components are in a React app. Top-level components are the components nearest to the root component and affect the rendering performance of all the components beneath them and often contain the most complexity. Leaf components are near the bottom of the tree and have no child components and are often frequently re-rendered.
255+
Même si les arbres de rendu peuvent varier d'un rendu à l'autre, ces arbres restent utiles pour identifier les composants racine et feuilles d'une appli React. Les composants de haut nivecau sont ceux les plus proches du composant racine, et peuvent impacter la performance de tous les composants en-dessous d'eux. Ce sont souvent eux qui ont la plus forte complexité. Les composants feuilles sont vers le bas de l'arbre, n'ont pas de composants enfants et refont souvent fréquemment leur rendu.
257256

258-
Identifying these categories of components are useful for understanding data flow and performance of your app.
257+
Il est utile de bien identifier ces catégories de composants pour comprendre le flux de données et les performances de votre appli.
259258

260259
## The Module Dependency Tree {/*the-module-dependency-tree*/}
261260

0 commit comments

Comments
 (0)