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/guide/component-slots.md
+17-18Lines changed: 17 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,10 @@
1
1
# _Slots_
2
2
3
-
> Esta página pressupõe que você já leu o [Básico sobre Componentes](component-basics.md). Se você não está familizariado com componentes, recomendamos lê-lo primeiro.
3
+
> Esta página assume que você já leu o [Básico sobre Componentes](component-basics.md). Se você não está familizariado com componentes, recomendamos lê-lo primeiro.
4
4
5
5
## Conteúdo do _Slot_
6
6
7
-
Vue implementa uma API de distribuição de conteúdo inspirada em [um dos rascunhos de especificação de _Web Components_](https://github.com/w3c/webcomponents/blob/gh-pages/proposals/Slots-Proposal.md), utilizando o elemento `<slot>` como saída de distribuição de conteúdo.
7
+
Vue implementa uma API de distribuição de conteúdo inspirada no [rascunho da especificação de _Web Components_](https://github.com/w3c/webcomponents/blob/gh-pages/proposals/Slots-Proposal.md), utilizando o elemento `<slot>` como saída de distribuição de conteúdo.
8
8
9
9
Isto permite a criação de componentes como o seguinte exemplo:
10
10
@@ -32,7 +32,7 @@ Quando o componente renderizar, `<slot></slot>` será substituído por "Adiciona
32
32
</button>
33
33
```
34
34
35
-
_Strings_ são apenas um exemplo simples! _Slots_ podem servir vários tipos de conteúdo também, incluindo HTML:
35
+
_Strings_ são apenas um exemplo simples! _Slots_ podem conter código de _template_ também, incluindo HTML:
36
36
37
37
```html
38
38
<todo-button>
@@ -68,7 +68,7 @@ Se o _template_ de `<todo-button>` **não** possuísse o elemento `<slot>`, qual
68
68
</todo-button>
69
69
```
70
70
71
-
## Escopo de Compilação
71
+
## Escopo da Renderização
72
72
73
73
Quando você desejar utilizar dados dentro de um _slot_, como em:
74
74
@@ -78,11 +78,11 @@ Quando você desejar utilizar dados dentro de um _slot_, como em:
78
78
</todo-button>
79
79
```
80
80
81
-
Este _slot_ possui acesso às propriedades de sua instância (isto é, ao "escopo" de sua instância), assim como o resto do _template_.
81
+
Este _slot_ possui acesso às propriedades da mesma instância (isto é, mesmo "escopo"), que o resto do _template_.
82
82
83
-
<imgsrc="/images/slot.png"width="447"height="auto"style="display: block; margin: 0auto; max-width: 100%"loading="lazy"alt="Diagrama para explicar o Escopo de Compilação">
83
+
<imgsrc="/images/slot.png"width="447"height="auto"style="display: block; margin: 0auto; max-width: 100%"loading="lazy"alt="Diagrama para explicar o Escopo da Renderização">
84
84
85
-
Entretanto, o_slot_*não* possui acesso ao escopo de `<todo-button>`. Por exemplo, se tentarmos adquirir o valor de `action`, não será possível:
85
+
O_slot_*não* possui acesso ao escopo de `<todo-button>`. Por exemplo, se tentarmos adquirir o valor de `action`, não será possível:
86
86
87
87
```html
88
88
<todo-buttonaction="delete">
@@ -99,8 +99,7 @@ Lembre-se, como regra, de que:
99
99
100
100
> Tudo do _template_ pai _(parent template)_ é compilado no escopo pai _(parent scope)_; tudo do _template_ filho _(child template)_, é compilado no escopo filho _(child scope)_.
101
101
102
-
## Conteúdo padrão
103
-
102
+
## Conteúdo Padrão
104
103
105
104
Há certos casos onde é interessante definir um conteúdo padrão (ou de _fallback_) para um _slot_ — ou seja, conteúdo que será apenas renderizado caso nenhum outro for informado. Por exemplo, no componente `<submit-button>`:
106
105
@@ -118,7 +117,7 @@ Podemos querer mostrar "Enviar" dentro do `<button>` quando nenhum outro texto f
118
117
</button>
119
118
```
120
119
121
-
Agora, ao utilizarmos o componente `<submit-button>`, sem informar um conteúdo...
120
+
Agora, ao utilizarmos o componente `<submit-button>`, sem prover um conteúdo:
122
121
123
122
```html
124
123
<submit-button></submit-button>
@@ -132,7 +131,7 @@ Agora, ao utilizarmos o componente `<submit-button>`, sem informar um conteúdo.
132
131
</button>
133
132
```
134
133
135
-
Entretanto, se especificarmos um conteúdo...
134
+
Entretanto, se especificarmos um conteúdo:
136
135
137
136
```html
138
137
<submit-button>
@@ -148,7 +147,7 @@ O conteúdo informado que será renderizado no lugar de "Enviar":
148
147
</button>
149
148
```
150
149
151
-
## _Slots_nomeados
150
+
## _Slots_Nomeados
152
151
153
152
Há casos onde é interessante utilizar vários slots. Por exemplo, em um componente `<base-layout>`, com o seguinte _template_:
154
153
@@ -222,11 +221,11 @@ O HTML renderizado será:
222
221
</div>
223
222
```
224
223
225
-
É importante destacar que **`v-slot` pode ser adicionado apenas a um `<template>`** ([exceto neste caso](#sintaxe-abreviada-para-slot-unico-e-default)).
224
+
É importante destacar que **`v-slot` pode ser adicionado apenas à um `<template>`** ([exceto neste caso](#sintaxe-abreviada-para-slot-unico-e-default)).
226
225
227
226
## Definição de Escopo em _Slots_
228
227
229
-
Em certos momentos, é interessante acessar dados apenas disponíveis no componente filho _(child component)_ no conteúdo de um _slot_. Um caso muito comum é quando utilizamos um componente específico para renderizarmos cada item de um vetor _(array)_ ou, simplesmente, para personalizarmos como cada item é renderizado.
228
+
Em certos momentos, é interessante acessar dados apenas disponíveis no componente filho _(child component)_ no conteúdo de um _slot_. Um caso comum é utilizarmos um componente para renderizarmos itens de um Array, e queremos o poder de personalizar como cada item é renderizado.
230
229
231
230
Por exemplo, em um componente que possui uma lista de afazeres:
232
231
@@ -268,7 +267,7 @@ Para fazer com que `item` esteja disponível para uso no conteúdo do _slot_ def
268
267
</ul>
269
268
```
270
269
271
-
Atributos passados para um elemento `<slot>` são chamados de **_props_ do _slot_**_(slot props)_. Agora, no escopo do componente pai _(parent scope)_, podemos utilizar `v-slot` com um valor, que será utilizado, neste caso, como o nome de acesso a estes _props_ do _slot_:
270
+
Atributos passados para um elemento `<slot>` são chamados de **_props_ do _slot_**_(slot props)_. Agora, no escopo do componente pai _(parent scope)_, podemos utilizar `v-slot` com um valor, que será utilizado, neste caso, como o nome de acesso à estes _props_ do _slot_:
272
271
273
272
```html
274
273
<todo-list>
@@ -333,7 +332,7 @@ Sempre que houver mais de um _slot_, utilize da sintaxe completa, com `<template
333
332
</current-user>
334
333
```
335
334
336
-
### Desestruturando _Props_em um_Slot_
335
+
### Desestruturando _Props_do_Slot_
337
336
338
337
Internamente, _slots_ com escopo definido encapsulam o conteúdo do seu respectivo _slot_ em uma função com um único argumento:
339
338
@@ -343,7 +342,7 @@ function (slotProps) {
343
342
}
344
343
```
345
344
346
-
Isto significa que o valor passado a`v-slot` pode aceitar, na verdade, qualquer expressão JavaScript válida de definição de argumentos de uma função. Portanto, você também pode utilizar a [desestruturação de objetos, da ES2015](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Object_destructuring), a fim de trabalhar apenas com os _props_ que você desejar no conteúdo do _slot_, como no exemplo abaixo:
345
+
Isto significa que o valor passado à`v-slot` pode aceitar, na verdade, qualquer expressão JavaScript válida na definição de argumentos de uma função. Portanto, você também pode utilizar a [desestruturação de objetos, da ES2015](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Object_destructuring), a fim de trabalhar apenas com os _props_ que você desejar no conteúdo do _slot_, como no exemplo abaixo:
347
346
348
347
```html
349
348
<todo-listv-slot="{ item }">
@@ -364,7 +363,7 @@ Isto pode tornar o _template_ muito mais limpo, especialmente quando o _slot_ fo
364
363
Você pode até definir valores padrão _(fallbacks)_, a fim de serem utilizados quando um _prop_ do _slot_ não possuir um valor definido _(undefined)_:
365
364
366
365
```html
367
-
<todo-listv-slot="{ item = 'Isto é um afazer' }">
366
+
<todo-listv-slot="{ item = 'Isto é um afazer placeholder' }">
0 commit comments