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
Copy file name to clipboardExpand all lines: src/v2/guide/components-slots.md
+17-16Lines changed: 17 additions & 16 deletions
Original file line number
Diff line number
Diff line change
@@ -6,11 +6,12 @@ order: 104
6
6
7
7
> Cette page suppose que vous avez déjà lu les principes de base des [composants](components.html). Lisez-les en premier si les composants sont quelque chose de nouveau pour vous.
8
8
9
-
## Les « Slot content » ou « Contenu de slot »
9
+
## Les contenu de slot
10
10
11
-
Vue implémente une API de distribution de contenu inspirée du [Brouillon de spécification des WebComponents](https://github.com/w3c/webcomponents/blob/gh-pages/proposals/Slots-Proposal.md) utilisant l'élément `<slot>` comme zone de distribution de contenu.
11
+
Vue implémente une API de distribution de contenu inspirée du [brouillon de spécification des WebComponents](https://github.com/w3c/webcomponents/blob/gh-pages/proposals/Slots-Proposal.md) utilisant l'élément `<slot>` comme zone de distribution de contenu.
12
12
13
13
Cela vous permet de composer vos composants ainsi :
14
+
14
15
```html
15
16
<navigation-linkurl="/profile">
16
17
Mon profil
@@ -50,9 +51,9 @@ Ou encore faire appel à d'autres composants :
50
51
51
52
Si `<navigation-link>` ne contient **pas** d'élément `<slot>`, le contenu enfant sera simplement ignoré.
52
53
53
-
## Les Slots nommés
54
+
## Les slots nommés
54
55
55
-
Dans certains cas, il peut être intéressant d'avoir plusieurs éléments `<slot>`. Dans un exemple hypothétique, voici le template d'un composant `<base-layout>`:
56
+
Dans certains cas, il peut être intéressant d'avoir plusieurs éléments `<slot>`. Dans un exemple hypothétique, voici le template d'un composant `<base-layout>`:
56
57
57
58
```html
58
59
<divclass="container">
@@ -101,7 +102,7 @@ Afin de distribuer le contenu dans les éléments `<slot>` appropriés, il suffi
101
102
</base-layout>
102
103
```
103
104
104
-
Ou utiliser l'attribut `slot` directement sur un élément normal:
105
+
ou utiliser l'attribut `slot` directement sur un élément normal:
105
106
106
107
```html
107
108
<base-layout>
@@ -145,7 +146,7 @@ Pour procéder de la sorte, il est possible de spécifier le contenu par défaut
145
146
146
147
Si le `<slot>` est rempli dans le composant parent, le contenu par défaut est remplacé.
147
148
148
-
## Scope de compilation du template
149
+
## Portée de compilation du template
149
150
150
151
Quand on utilise des données dans le slot, comme dans l'exemple suivant :
151
152
@@ -155,11 +156,11 @@ Quand on utilise des données dans le slot, comme dans l'exemple suivant :
155
156
</navigation-link>
156
157
```
157
158
158
-
Le `<slot>` bénéficie des mêmes propriétés d'instance (même « scope » ou « contexte ») que le reste du template parent. Le `<slot>`**ne** bénéficie en aucun cas des éléments du « scope » de l'instance de `<navigation-link>`. Par exemple, tenter d'accéder à la props `url` ne fonctionnera pas. À titre de règle générale, souvenez-vous que :
159
+
Le `<slot>` bénéficie des mêmes propriétés d'instance (même « contexte ») que le reste du template parent. Le `<slot>`**ne** bénéficie en aucun cas des éléments de portée de l'instance de `<navigation-link>`. Par exemple, tenter d'accéder à la props `url` ne fonctionnera pas. À titre de règle générale, souvenez-vous que :
159
160
160
161
> Tout ce qui est dans le `<template>` parent est compilé dans le contexte parent. Tout ce qui est dans le `<template>` enfant est compilé dans le contexte enfant.
161
162
162
-
## Les slots scopés (ou slots avec accès au scope enfant)
163
+
## Les slots avec portée
163
164
164
165
> Nouveauté en 2.1.0+
165
166
@@ -176,9 +177,9 @@ Dans certains cas, il peut être intéressant lors de l'utilisation d'un composa
176
177
</ul>
177
178
```
178
179
179
-
Dans certaines parties de l'application, il serait intéressant de personnaliser le rendu pour chaque élément de la liste, plutôt que d'afficher seulement `todo.text`. C'est possible avec les slots scopés.
180
+
Dans certaines parties de l'application, il serait intéressant de personnaliser le rendu pour chaque élément de la liste, plutôt que d'afficher seulement `todo.text`. C'est possible avec les slots avec portée.
180
181
181
-
Pour utiliser cette fonctionnalité, nous allons englober le contenu des todos dans un élément `<slot>`, et lui fournir des données appartenant/pertinentes à son contexte : dans notre cas, l'objet `todo`) :
182
+
Pour utiliser cette fonctionnalité, nous allons englober le contenu des todos dans un élément `<slot>`, et lui fournir des données appartenant / pertinentes à son contexte : dans notre cas, l'objet `todo`) :
182
183
183
184
```html
184
185
<ul>
@@ -201,11 +202,11 @@ Lorsqu'on utilise le composant `<todo-list>`, il devient alors possible de fourn
201
202
```html
202
203
<todo-listv-bind:todos="todos">
203
204
<!-- Définir `slotProps` pour assigner les données du slot dans une variable -->
204
-
<templateslot-scope="lesPropsDuSlot">
205
+
<templateslot-scope="slotProps">
205
206
<!-- Ici, nous allons personnaliser le rendu du slot -->
206
-
<!-- `lesPropsDuSlot` contiendra les props fournies par v-bind dans le slot enfant -->
<!-- `slotProps` contiendra les props fournies par v-bind dans le slot enfant -->
208
+
<spanv-if="slotProps.todo.isComplete">✓</span>
209
+
{{ slotProps.todo.text }}
209
210
</template>
210
211
</todo-list>
211
212
```
@@ -214,7 +215,7 @@ Lorsqu'on utilise le composant `<todo-list>`, il devient alors possible de fourn
214
215
215
216
### Affectation par décomposition du `slot-scope`
216
217
217
-
La valeur de l'attribut `slot-scope` peut actuellement recevoir une expression JavaScript valide qui pourrait apparaitre en argument de définition d'une fonction. Attention cependant, cette fonctionnalité est soumise à l'utilisation des environnements suivants : [Composants monofichiers](single-file-components.html) ou [Navigateurs modernes](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Affecter_par_d%C3%A9composition#Compatibilité_des_navigateurs) vous pouvez alors utiliser [Affecter par décomposition (ES2015)](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Affecter_par_d%C3%A9composition) dans l'expression, de cette manière :
218
+
La valeur de l'attribut `slot-scope` peut actuellement recevoir une expression JavaScript valide qui pourrait apparaitre en argument de définition d'une fonction. Attention cependant, cette fonctionnalité n'est utilisable que dans des environnements de [composants monofichiers](single-file-components.html) ou des [navigateurs modernes](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Affecter_par_d%C3%A9composition#Compatibilité_des_navigateurs). Vous pouvez alors utiliser une [affectation par décomposition (ES2015)](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Affecter_par_d%C3%A9composition) dans l'expression, de cette manière :
218
219
219
220
```html
220
221
<todo-listv-bind:todos="todos">
@@ -225,4 +226,4 @@ La valeur de l'attribut `slot-scope` peut actuellement recevoir une expression J
225
226
</todo-list>
226
227
```
227
228
228
-
Cela peut être pratique pour rendre vos slot scopés un peu plus lisibles.
229
+
Cela peut être pratique pour rendre vos slot avec portée un peu plus lisibles.
0 commit comments