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
Usually though, you'll want every prop to be a specific type of value. In these cases, you can list props as an object, where the properties' names and values contain the prop names and types, respectively:
13
+
Mas normalmente, você vai querer que cada propriedade seja de um tipo específico de valor. Nestes casos, você pode listar as propriedades como um objeto cujas chaves e valores contém o nome e o tipo da propriedade, respectivamente:
14
14
15
15
```js
16
16
props: {
@@ -20,116 +20,116 @@ props: {
20
20
commentIds:Array,
21
21
author:Object,
22
22
callback:Function,
23
-
contactsPromise:Promise//or any other constructor
23
+
contactsPromise:Promise//ou qualquer outro construtor
24
24
}
25
25
```
26
26
27
-
This not only documents your component, but will also warn users in the browser's JavaScript console if they pass the wrong type. You'll learn much more about [type checks and other prop validations](#prop-validation) further down this page.
27
+
Fazer isso não apenas documenta seu componente, mas também mostra um aviso aos usuários no console JavaScript do navegador se eles passarem o tipo errado. Você irá aprender muito mais sobre [checagem de tipos e outras validações de propriedades](#validacao-de-propriedades) mais abaixo nesta página.
28
28
29
-
## Passing Static or Dynamic Props
29
+
## Passando Propriedades Estáticas ou Dinâmicas
30
30
31
-
So far, you've seen props passed a static value, like in:
31
+
Até agora, você viu propriedades passando um valor estático, como por exemplo:
32
32
33
33
```html
34
-
<blog-posttitle="My journey with Vue"></blog-post>
34
+
<blog-posttitle="Minha jornada com Vue"></blog-post>
35
35
```
36
36
37
-
You've also seen props assigned dynamically with`v-bind`or its shortcut, the `:` character, such as in:
37
+
Você também viu propriedades atribuídas dinamicamente com`v-bind`ou sua abreviação, o caractere `:`, como em:
38
38
39
39
```html
40
-
<!--Dynamically assign the value of a variable-->
40
+
<!--Dinamicamente atribui o valor de uma variável-->
41
41
<blog-post:title="post.title"></blog-post>
42
42
43
-
<!--Dynamically assign the value of a complex expression-->
44
-
<blog-post:title="post.title + ' by ' + post.author.name"></blog-post>
43
+
<!--Dinamicamente atribui o valor de uma expressão complexa-->
44
+
<blog-post:title="post.title + ' by ' + post.author.name"><blog-post>
45
45
```
46
46
47
-
In the two examples above, we happen to pass string values, but _any_ type of value can actually be passed to a prop.
47
+
Em ambos os exemplos acima nós passamos valores de String, mas _qualquer_ tipo de valor pode ser passado para uma propriedade.
48
48
49
-
### Passing a Number
49
+
### Passando um Número
50
50
51
51
```html
52
-
<!--Even though `42` is static, we need v-bind to tell Vue that-->
53
-
<!--this is a JavaScript expression rather than a string. -->
52
+
<!--Apesar de `42` ser estático, precisamos do v-bind para dizer-->
53
+
<!--ao Vue que esta é uma expressão JavaScript e não uma String.-->
54
54
<blog-post:likes="42"></blog-post>
55
55
56
-
<!--Dynamically assign to the value of a variable. -->
56
+
<!--Dinamicamente atribui o valor de uma variável. -->
57
57
<blog-post:likes="post.likes"></blog-post>
58
58
```
59
59
60
-
### Passing a Boolean
60
+
### Passando um Boolean
61
61
62
62
```html
63
-
<!--Including the prop with no value will imply `true`. -->
63
+
<!--Incluir a propriedade, sem valor nenhum, implica em `true`. -->
64
64
<blog-postis-published></blog-post>
65
65
66
-
<!--Even though `false` is static, we need v-bind to tell Vue that-->
67
-
<!--this is a JavaScript expression rather than a string. -->
66
+
<!--Apesar de `false` ser estático, precisamos do v-bind para dizer-->
67
+
<!--ao Vue que esta é uma expressão JavaScript e não uma String.-->
68
68
<blog-post:is-published="false"></blog-post>
69
69
70
-
<!--Dynamically assign to the value of a variable. -->
70
+
<!--Dinamicamente atribui o valor de uma variável. -->
<!--Even though the object is static, we need v-bind to tell Vue that-->
89
-
<!--this is a JavaScript expression rather than a string. -->
88
+
<!--Apesar de o objeto ser estático, precisamos do v-bind para dizer-->
89
+
<!--ao Vue que esta é uma expressão JavaScript e não uma String.-->
90
90
<blog-post
91
91
:author="{
92
92
name: 'Veronica',
93
93
company: 'Veridian Dynamics'
94
94
}"
95
95
></blog-post>
96
96
97
-
<!--Dynamically assign to the value of a variable. -->
97
+
<!--Dinamicamente atribui o valor de uma variável. -->
98
98
<blog-post:author="post.author"></blog-post>
99
99
```
100
100
101
-
### Passing the Properties of an Object
101
+
### Passando as Propriedades de um Objeto
102
102
103
-
If you want to pass all the properties of an object as props, you can use `v-bind`without an argument (`v-bind`instead of `:prop-name`). For example, given a `post` object:
103
+
Se você deseja passar todas as propriedades de um objeto como propriedades, você pode utilizar o `v-bind`sem argumentos (`v-bind`no lugar de `:nome-da-propriedade`). Por exemplo, dado um objeto `post`:
All props form a **one-way-down binding**between the child property and the parent one: when the parent property updates, it will flow down to the child, but not the other way around. This prevents child components from accidentally mutating the parent's state, which can make your app's data flow harder to understand.
126
+
Todas as propriedades formam um **vínculo unidirecional para baixo**entre a propriedade do filho e a do pai: quando a propriedade do pai é atualizada, ela vai fluir para baixo até o filho, mas não do filho para o pai. Isso evita que componentes filhos acidentalmente alterem o estado do pai, o que pode tornar o fluxo de dados da sua aplicação mais difícil de entender.
127
127
128
-
In addition, every time the parent component is updated, all props in the child component will be refreshed with the latest value. This means you should**not**attempt to mutate a prop inside a child component. If you do, Vue will warn you in the console.
128
+
Além disso, toda vez que o componente pai é atualizado, todas as propriedades no componente filho serão atualizadas com o valor mais recente. Isso significa que você**não**deve tentar alterar uma propriedade dentro do componente filho. Se você tentar, o Vue vai te avisar no console.
129
129
130
-
There are usually two cases where it's tempting to mutate a prop:
130
+
Existem dois casos mais comuns onde é tentador alterar uma propriedade:
131
131
132
-
1.**The prop is used to pass in an initial value; the child component wants to use it as a local data property afterwards.**In this case, it's best to define a local data property that uses the prop as its initial value:
132
+
1.**A propriedade é usada para passar um valor inicial; após isso, o componente filho quer usá-la como uma propriedade de dado local.**Neste caso, é melhor definir uma propriedade de dados local que usa a propriedade recebida como seu valor inicial:
133
133
134
134
```js
135
135
props: ['initialCounter'],
@@ -140,7 +140,7 @@ data() {
140
140
}
141
141
```
142
142
143
-
2.**The prop is passed in as a raw value that needs to be transformed.**In this case, it's best to define a computed property using the prop's value:
143
+
2.**A propriedade é passada como um valor puro que precisa ser transformado.**Neste caso, é melhor definir uma propriedade computada usando o valor da propriedade recebida:
144
144
145
145
```js
146
146
props: ['size'],
@@ -151,70 +151,70 @@ computed: {
151
151
}
152
152
```
153
153
154
-
::: tip Note
155
-
Note that objects and arrays in JavaScript are passed by reference, so if the prop is an array or object, mutating the object or array itself inside the child component **will**affect parent state.
154
+
::: tip Observação
155
+
Observe que objetos e Arrays em JavaScript são passados por referência, então se a propriedade for um Array ou objeto, alterar o objeto ou Array em si dentro do componente filho **irá**afetar o estado do pai.
156
156
:::
157
157
158
-
## Prop Validation
158
+
## Validação de Propriedades
159
159
160
-
Components can specify requirements for their props, such as the types you've already seen. If a requirement isn't met, Vue will warn you in the browser's JavaScript console. This is especially useful when developing a component that's intended to be used by others.
160
+
Componentes podem especificar requerimentos para suas propriedades, tais como os tipos que você já viu. Se um requerimento não for satisfeito, o Vue irá avisá-lo no console JavaScript do navegador. Isso é especialmente útil ao desenvolver um componente que será utilizado por outras pessoas.
161
161
162
-
To specify prop validations, you can provide an object with validation requirements to the value of `props`, instead of an array of strings. For example:
162
+
Para especificar as validações de propriedade, você pode fornecer um objeto com os requerimentos de validação ao valor de `props`, ao invés de um Array de Strings. Por exemplo:
163
163
164
164
```js
165
165
app.component('my-component', {
166
166
props: {
167
-
//Basic type check (`null` and `undefined` values will pass any type validation)
167
+
//Checagem básica de tipo (valores `null` e `undefined` passam qualquer validação de tipo)
168
168
propA:Number,
169
-
//Multiple possible types
169
+
//Múltiplos tipos possíveis
170
170
propB: [String, Number],
171
-
//Required string
171
+
//String obrigatória
172
172
propC: {
173
173
type:String,
174
174
required:true
175
175
},
176
-
// Number with a default value
176
+
// Number com valor padrão
177
177
propD: {
178
178
type:Number,
179
179
default:100
180
180
},
181
-
// Object with a default value
181
+
// Object com valor padrão
182
182
propE: {
183
183
type:Object,
184
-
// Object or array defaults must be returned from
185
-
//a factory function
184
+
// Object ou Array padrões devem ser retornados
185
+
//de uma função construtora
186
186
default:function() {
187
187
return { message:'hello' }
188
188
}
189
189
},
190
-
//Custom validator function
190
+
//Função validadora customizada
191
191
propF: {
192
192
validator:function(value) {
193
-
//The value must match one of these strings
193
+
//O valor passado deve bater com alguma destas Strings
//Unlike object or array default, this is not a factory function - this is a function to serve as a default value
200
+
//Diferente de um Object ou Array padrão, isto não é uma função construtora - isto é uma função para servir de valor padrão
201
201
default:function() {
202
-
return'Default function'
202
+
return'Função padrão'
203
203
}
204
204
}
205
205
}
206
206
})
207
207
```
208
208
209
-
When prop validation fails, Vue will produce a console warning (if using the development build).
209
+
Quando a validação de uma propriedade falha, o Vue irá produzir um aviso no console (se estiver usando a versão de desenvolvimento).
210
210
211
-
::: tip Note
212
-
Note that props are validated **before**a component instance is created, so instance properties (e.g.`data`, `computed`, etc) will not be available inside `default`or`validator` functions.
211
+
::: tip Observação
212
+
Observe que as propriedades são validadas **antes**de a instância do componente ser criada, então as propriedades de instância (como`data`, `computed`, etc) não estarão disponíveis dentro das funções `default`ou`validator`.
213
213
:::
214
214
215
-
### Type Checks
215
+
### Checagem de Tipos
216
216
217
-
The`type`can be one of the following native constructors:
217
+
O`type`(tipo) pode ser um dos seguintes construtores nativos:
218
218
219
219
- String
220
220
- Number
@@ -225,7 +225,7 @@ The `type` can be one of the following native constructors:
225
225
- Function
226
226
- Symbol
227
227
228
-
In addition, `type`can also be a custom constructor function and the assertion will be made with an `instanceof` check. For example, given the following constructor function exists:
228
+
Além disso, `type`também pode ser uma função construtora customizada e a asserção será feita com uma checagem através de `instanceof`. Por exemplo, dada a seguinte função construtora já existente:
229
229
230
230
```js
231
231
functionPerson(firstName, lastName) {
@@ -234,7 +234,7 @@ function Person(firstName, lastName) {
to validate that the value of the`author`prop was created with`new Person`.
247
+
para validar que o valor da propriedade`author`foi criada utilizando`new Person`.
248
248
249
-
## Prop Casing (camelCase vs kebab-case)
249
+
## _Case_ de Propriedades (_camelCase_ vs _kebab-case_)
250
250
251
-
HTML attribute names are case-insensitive, so browsers will interpret any uppercase characters as lowercase. That means when you're using in-DOM templates, camelCased prop names need to use their kebab-cased (hyphen-delimited) equivalents:
251
+
Nomes de atributos HTML são _case-insensitive_, logo navegadores irão interpretar quaisquer caracteres maiúsculos como minúsculas. Isso significa que quando você está usando _templates_ dentro do DOM, nomes de propriedades em _camelCase_ devem utilizar seus equivalentes _kebab-case_ (delimitados por hífen):
252
252
253
253
```js
254
254
constapp=Vue.createApp({})
255
255
256
256
app.component('blog-post', {
257
-
// camelCase in JavaScript
257
+
// camelCase no JavaScript
258
258
props: ['postTitle'],
259
259
template:'<h3>{{ postTitle }}</h3>'
260
260
})
261
261
```
262
262
263
263
```html
264
-
<!-- kebab-case in HTML -->
265
-
<blog-postpost-title="hello!"></blog-post>
264
+
<!-- kebab-case no HTML -->
265
+
<blog-postpost-title="olá!"></blog-post>
266
266
```
267
267
268
-
Again, if you're using string templates, this limitation does not apply.
268
+
Novamente, caso você esteja usando _templates_ String, esta limitação não se aplica.
0 commit comments