Skip to content

Commit da86e9c

Browse files
authored
Merge pull request #45 from cacauisadog/master
Translates "guide/component-props.md"
2 parents 593cddb + 3570198 commit da86e9c

File tree

1 file changed

+74
-74
lines changed

1 file changed

+74
-74
lines changed

src/guide/component-props.md

Lines changed: 74 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
# Props
1+
# Propriedades
22

3-
> This page assumes you've already read the [Components Basics](component-basics.md). Read that first if you are new to components.
3+
> Esta página assume que você já leu o [Básico sobre Componentes](component-basics.md). Leia lá primeiro caso seja novo com componentes.
44
5-
## Prop Types
5+
## Tipos de Propriedades
66

7-
So far, we've only seen props listed as an array of strings:
7+
Até agora, nós apenas vimos propriedades listadas como um Array de Strings:
88

99
```js
1010
props: ['title', 'likes', 'isPublished', 'commentIds', 'author']
1111
```
1212

13-
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:
1414

1515
```js
1616
props: {
@@ -20,116 +20,116 @@ props: {
2020
commentIds: Array,
2121
author: Object,
2222
callback: Function,
23-
contactsPromise: Promise // or any other constructor
23+
contactsPromise: Promise // ou qualquer outro construtor
2424
}
2525
```
2626

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.
2828

29-
## Passing Static or Dynamic Props
29+
## Passando Propriedades Estáticas ou Dinâmicas
3030

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:
3232

3333
```html
34-
<blog-post title="My journey with Vue"></blog-post>
34+
<blog-post title="Minha jornada com Vue"></blog-post>
3535
```
3636

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:
3838

3939
```html
40-
<!-- Dynamically assign the value of a variable -->
40+
<!-- Dinamicamente atribui o valor de uma variável -->
4141
<blog-post :title="post.title"></blog-post>
4242

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>
4545
```
4646

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.
4848

49-
### Passing a Number
49+
### Passando um Número
5050

5151
```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. -->
5454
<blog-post :likes="42"></blog-post>
5555

56-
<!-- Dynamically assign to the value of a variable. -->
56+
<!-- Dinamicamente atribui o valor de uma variável. -->
5757
<blog-post :likes="post.likes"></blog-post>
5858
```
5959

60-
### Passing a Boolean
60+
### Passando um Boolean
6161

6262
```html
63-
<!-- Including the prop with no value will imply `true`. -->
63+
<!-- Incluir a propriedade, sem valor nenhum, implica em `true`. -->
6464
<blog-post is-published></blog-post>
6565

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. -->
6868
<blog-post :is-published="false"></blog-post>
6969

70-
<!-- Dynamically assign to the value of a variable. -->
70+
<!-- Dinamicamente atribui o valor de uma variável. -->
7171
<blog-post :is-published="post.isPublished"></blog-post>
7272
```
7373

74-
### Passing an Array
74+
### Passando um Array
7575

7676
```html
77-
<!-- Even though the array is static, we need v-bind to tell Vue that -->
78-
<!-- this is a JavaScript expression rather than a string. -->
77+
<!-- Apesar de o Array ser estático, precisamos do v-bind para dizer -->
78+
<!-- ao Vue que esta é uma expressão JavaScript e não uma String. -->
7979
<blog-post :comment-ids="[234, 266, 273]"></blog-post>
8080

81-
<!-- Dynamically assign to the value of a variable. -->
81+
<!-- Dinamicamente atribui o valor de uma variável. -->
8282
<blog-post :comment-ids="post.commentIds"></blog-post>
8383
```
8484

85-
### Passing an Object
85+
### Passando um Objeto
8686

8787
```html
88-
<!-- 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. -->
9090
<blog-post
9191
:author="{
9292
name: 'Veronica',
9393
company: 'Veridian Dynamics'
9494
}"
9595
></blog-post>
9696

97-
<!-- Dynamically assign to the value of a variable. -->
97+
<!-- Dinamicamente atribui o valor de uma variável. -->
9898
<blog-post :author="post.author"></blog-post>
9999
```
100100

101-
### Passing the Properties of an Object
101+
### Passando as Propriedades de um Objeto
102102

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`:
104104

105105
```js
106106
post: {
107107
id: 1,
108-
title: 'My Journey with Vue'
108+
title: 'Minha Jornada com Vue'
109109
}
110110
```
111111

112-
The following template:
112+
O seguinte _template_:
113113

114114
```html
115115
<blog-post v-bind="post"></blog-post>
116116
```
117117

118-
Will be equivalent to:
118+
Será equivalente a:
119119

120120
```html
121121
<blog-post v-bind:id="post.id" v-bind:title="post.title"></blog-post>
122122
```
123123

124-
## One-Way Data Flow
124+
## Fluxo de Dados Unidirecional
125125

126-
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.
127127

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.
129129

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:
131131

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:
133133

134134
```js
135135
props: ['initialCounter'],
@@ -140,7 +140,7 @@ data() {
140140
}
141141
```
142142

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:
144144

145145
```js
146146
props: ['size'],
@@ -151,70 +151,70 @@ computed: {
151151
}
152152
```
153153

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.
156156
:::
157157

158-
## Prop Validation
158+
## Validação de Propriedades
159159

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.
161161

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:
163163

164164
```js
165165
app.component('my-component', {
166166
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)
168168
propA: Number,
169-
// Multiple possible types
169+
// Múltiplos tipos possíveis
170170
propB: [String, Number],
171-
// Required string
171+
// String obrigatória
172172
propC: {
173173
type: String,
174174
required: true
175175
},
176-
// Number with a default value
176+
// Number com valor padrão
177177
propD: {
178178
type: Number,
179179
default: 100
180180
},
181-
// Object with a default value
181+
// Object com valor padrão
182182
propE: {
183183
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
186186
default: function() {
187187
return { message: 'hello' }
188188
}
189189
},
190-
// Custom validator function
190+
// Função validadora customizada
191191
propF: {
192192
validator: function(value) {
193-
// The value must match one of these strings
193+
// O valor passado deve bater com alguma destas Strings
194194
return ['success', 'warning', 'danger'].indexOf(value) !== -1
195195
}
196196
},
197-
// Function with a default value
197+
// Função com valor padrão
198198
propG: {
199199
type: Function,
200-
// 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
201201
default: function() {
202-
return 'Default function'
202+
return 'Função padrão'
203203
}
204204
}
205205
}
206206
})
207207
```
208208

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).
210210

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`.
213213
:::
214214

215-
### Type Checks
215+
### Checagem de Tipos
216216

217-
The `type` can be one of the following native constructors:
217+
O `type` (tipo) pode ser um dos seguintes construtores nativos:
218218

219219
- String
220220
- Number
@@ -225,7 +225,7 @@ The `type` can be one of the following native constructors:
225225
- Function
226226
- Symbol
227227

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:
229229

230230
```js
231231
function Person(firstName, lastName) {
@@ -234,7 +234,7 @@ function Person(firstName, lastName) {
234234
}
235235
```
236236

237-
You could use:
237+
Você poderia usar:
238238

239239
```js
240240
app.component('blog-post', {
@@ -244,25 +244,25 @@ app.component('blog-post', {
244244
})
245245
```
246246

247-
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`.
248248

249-
## Prop Casing (camelCase vs kebab-case)
249+
## _Case_ de Propriedades (_camelCase_ vs _kebab-case_)
250250

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):
252252

253253
```js
254254
const app = Vue.createApp({})
255255

256256
app.component('blog-post', {
257-
// camelCase in JavaScript
257+
// camelCase no JavaScript
258258
props: ['postTitle'],
259259
template: '<h3>{{ postTitle }}</h3>'
260260
})
261261
```
262262

263263
```html
264-
<!-- kebab-case in HTML -->
265-
<blog-post post-title="hello!"></blog-post>
264+
<!-- kebab-case no HTML -->
265+
<blog-post post-title="olá!"></blog-post>
266266
```
267267

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

Comments
 (0)