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
Toda aplicação Vue é iniciada com a criação de uma nova **instância Vue** com a função `Vue`:
5
+
Toda aplicação Vue começa com a criação de uma nova **instância Vue** com a função `Vue`:
10
6
11
7
```js
12
-
var vm =newVue({
13
-
// opções
14
-
})
8
+
Vue.createApp(/* opções */)
9
+
```
10
+
11
+
Após a instância ser criada, podemos _montá-la_, passando um contêiner para o método `mount`. Por exemplo, se quisermos montar um aplicativo Vue em `<div id="app"></div>`, devemos passar `#app`:
12
+
13
+
```js
14
+
Vue.createApp(/* options */).mount('#app')
15
15
```
16
16
17
17
Embora não seja estritamente associado com o [padrão MVVM](https://en.wikipedia.org/wiki/Model_View_ViewModel), o _design_ do Vue foi parcialmente inspirado por ele. Como convenção, muitas vezes usamos a variável `vm` (abreviação de _ViewModel_) para se referir à instância Vue.
18
18
19
-
Quando você cria uma instância Vue, é necessário passar um **objeto de opções**. A maior parte deste guia descreve como você pode utilizar estas opções para criar os comportamentos desejados. Para referência, você também pode navegar pela lista completa de opções na [documentação da API](../api/#Opcoes-Dados).
19
+
Quando você cria uma instância Vue, é necessário passar um **objeto de opções**. A maior parte deste guia descreve como você pode utilizar estas opções para criar os comportamentos desejados. Para referência, você também pode navegar pela lista completa de opções na [documentação da API](../api/options-data.html).
20
20
21
-
Uma aplicação Vue consiste em uma **instância Vue raiz** criada com `new Vue`, opcionalmente organizada em uma árvore de componentes reutilizáveis aninhados. Por exemplo, um aplicativo de tarefas a realizar (do tipo _todo list_) poderia ter uma árvore de componentes como esta:
21
+
Uma aplicação Vue consiste em uma **instância Vue raiz** criada com `createApp`, opcionalmente organizada em uma árvore de componentes reutilizáveis aninhados. Por exemplo, um aplicativo de tarefas a realizar (do tipo _todo list_) poderia ter uma árvore de componentes como esta:
22
22
23
23
```
24
-
Instância Raiz
24
+
Root Instance
25
25
└─ TodoList
26
26
├─ TodoItem
27
-
│ ├─ TodoButtonDelete
28
-
│ └─ TodoButtonEdit
27
+
│ ├─ DeleteTodoButton
28
+
│ └─ EditTodoButton
29
29
└─ TodoListFooter
30
-
├─ TodosButtonClear
30
+
├─ ClearTodosButton
31
31
└─ TodoListStatistics
32
32
```
33
33
34
-
Falaremos sobre o [sistema de componentes](components.html) em detalhes futuramente. Por enquanto, saiba apenas que todos os componentes Vue também são instâncias, e aceitam o mesmo esquema de opções (exceto por algumas poucas opções específicas da raiz).
34
+
Falaremos sobre [o sistema de componentes](component-basics.html) em detalhes futuramente. Por enquanto, saiba apenas que todos os componentes Vue também são instâncias, e assim aceitam o mesmo objeto de opções.
35
35
36
36
## Dados e Métodos
37
37
38
-
Quando uma instância Vue é criada, ela adiciona todas as propriedades encontradas no objeto `data` ao **sistema de reatividade** do Vue. Quando os valores de qualquer destas propriedades muda, a camada visual (em inglês, _view_) "reage", atualizando-se para condizer com os novos valores.
38
+
Quando uma instância é criada, ela adiciona todas as propriedades encontradas no objeto `data` ao [**sistema de reatividade** do Vue](reactivity.html). Quando os valores dessas propriedades mudam, a camada visual (em inglês, _view_) "reage", atualizando-se para corresponder aos novos valores.
39
39
40
40
```js
41
41
// Nosso objeto de dados
42
-
var data = { a:1 }
42
+
constdata= { a:1 }
43
43
44
-
// O objeto é adicionado à instância Vue
45
-
var vm =newVue({
46
-
data: data
47
-
})
44
+
// O objeto é adicionado à raiz da instância
45
+
constvm=Vue.createApp({
46
+
data() {
47
+
return data
48
+
}
49
+
}).mount('#app')
48
50
49
51
// Acessar a propriedade na instância
50
52
// retorna aquilo que está no dado original
51
-
// ou seja, é uma referência ao mesmo objeto!
52
53
vm.a===data.a// => true
53
54
54
55
// Atribuir à propriedade na instância
55
56
// também afeta o dado original
56
57
vm.a=2
57
58
data.a// => 2
58
-
59
-
// ... e vice-versa
60
-
data.a=3
61
-
vm.a// => 3
62
59
```
63
60
64
61
Quando este dado for modificado, a camada visual irá "re-renderizar". Deve-se observar que as propriedades em `data` só são **reativas** se elas já existiam quando a instância foi criada. Isso significa que se você adicionar uma nova propriedade, como:
@@ -67,89 +64,89 @@ Quando este dado for modificado, a camada visual irá "re-renderizar". Deve-se o
67
64
vm.b='hi'
68
65
```
69
66
70
-
Então as mudanças em `b` não irão disparar qualquer atualização na interface. Se você sabe que precisará de uma propriedade no futuro, mas ela inicia vazia ou não existente, precisará especificar algum valor inicial. Por exemplo:
67
+
Então as mudanças em `b` não irão disparar qualquer atualização na interface. Se você sabe que precisará de uma propriedade no futuro, mas ela inicia vazia ou não existente, você precisará atribuir algum valor inicial. Por exemplo:
71
68
72
69
```js
73
-
data: {
74
-
newTodoText:'',
75
-
visitCount:0,
76
-
hideCompletedTodos:false,
77
-
todos: [],
78
-
error:null
70
+
data() {
71
+
return {
72
+
newTodoText:'',
73
+
visitCount:0,
74
+
hideCompletedTodos:false,
75
+
todos: [],
76
+
error:null
77
+
}
79
78
}
80
79
```
81
80
82
-
A única exceção é ao usar `Object.freeze()`, que previne propriedades existentes de serem modificadas. Também significa que o sistema de reatividade não pode _rastrear_ mudanças.
81
+
A única exceção é quanto ao uso do `Object.freeze()`, que previne propriedades existentes de serem modificadas, o que também significa que o sistema de reatividade não pode _rastrear_ mudanças.
Em adição às propriedades de dados, instâncias Vue expõem uma quantidade relevante de propriedades e métodos. Estes são prefixados com `$` para diferenciá-los das propriedades definidas pelo usuário. Por exemplo:
105
+
Em adição às propriedades de dados, instâncias expõem uma quantidade relevante de propriedades e métodos. Estes são prefixados com `$` para diferenciá-los das propriedades definidas pelo usuário. Por exemplo:
No futuro, você pode consultar a [documentação da API](../api/#Propriedades-de-Instancia) para a lista completa de propriedades e métodos da instância.
124
120
125
121
## Ciclo de Vida da Instância
126
122
127
-
<divclass="vueschool"><ahref="https://vueschool.io/lessons/understanding-the-vuejs-lifecycle-hooks?friend=vuejs"target="_blank"rel="sponsored noopener"title="Lição gratuita sobre Gatilhos do Ciclo de Vida do Vue.js">Assista a uma lição em vídeo gratuita na Vue School</a></div>
128
-
129
-
Cada instância Vue passa por uma série de etapas em sua inicialização - por exemplo, é necessário configurar a observação de dados, compilar o _template_, montar a instância no DOM, e atualizar o DOM quando os dados forem alterados. Ao longo do caminho, também ocorre a invocação de agumas funções chamadas de **gatilhos de ciclo de vida** (em inglês, _lifecycle hooks_), oferecendo a oportunidade de executar lógicas personalizadas em etapas específicas.
123
+
Cada instância Vue passa por uma série de etapas em sua inicialização - por exemplo, é necessário configurar a observação de dados, compilar o _template_, montar a instância no DOM, e atualizar o DOM quando os dados forem alterados. Ao longo do caminho, também ocorre a invocação de algumas funções chamadas de **gatilhos de ciclo de vida** (em inglês, _lifecycle hooks_), oferecendo a oportunidade de executar lógicas personalizadas em etapas específicas.
130
124
131
125
Por exemplo, o gatilho [`created`](../api/#created) pode ser utilizado para executar código logo após a instância ser criada:
132
126
133
127
```js
134
-
newVue({
135
-
data: {
136
-
a:1
128
+
Vue.createApp({
129
+
data() {
130
+
return {
131
+
a:1
132
+
}
137
133
},
138
-
created:function() {
134
+
created() {
139
135
// `this` aponta para a instância
140
-
console.log('a é: '+this.a)
136
+
console.log('a é: '+this.a)// => "a é: 1"
141
137
}
142
138
})
143
-
// => "a é: 1"
144
139
```
145
140
146
-
Existem outros gatilhos chamados em diferentes etapas do ciclo de vida da instância, como [`mounted`](../api/#mounted), [`updated`](../api/#updated) e [`destroyed`](../api/#destroyed). Qualquer gatilho de ciclo de vida é executado com seu contexto `this` apontando para a instância Vue que o invocou.
141
+
There are also other hooks which will be called at different stages of the instance's lifecycle, such as [mounted](../api/options-lifecycle-hooks.html#mounted), [updated](../api/options-lifecycle-hooks.html#updated), and [unmounted](../api/options-lifecycle-hooks.html#unmounted). All lifecycle hooks are called with their `this` context pointing to the current active instance invoking it.
142
+
Existem também outros gatilhos que serão chamados em diferentes etapas do ciclo de vida da instância, como [`mounted`](../api/options-lifecycle-hooks.html#mounted), [`updated`](../api/options-lifecycle-hooks.html#updated), e [`unmounted`](../api/options-lifecycle-hooks.html#unmounted). Todos os gatilhos de ciclo de vida são executados com seu contexto `this` apontando para a atual instância ativa que o invoca.
147
143
144
+
::: tip
148
145
Não utilize [_arrow functions_](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Functions/Arrow_functions) em propriedades de opções ou _callback_, como em `created: () => console.log(this.a)` ou `vm.$watch('a', newValue => this.myMethod())`. Como as _arrow functions_ não possuem um `this`,`this` será tratado como qualquer outra variável e lexicamente pesquisada através de escopos parentais até ser encontrada, frequentemente resultando em erros como `Uncaught TypeError: Cannot read property of undefined` ou `Uncaught TypeError: this.myMethod is not a function`.
146
+
:::
149
147
150
148
## Diagrama do Ciclo de Vida
151
149
152
-
Abaixo está um diagrama para o ciclo de vida da instância. Você não precisa entender completamente tudo o que está acontecendo neste momento,
153
-
mas conforme você for aprendendo e construindo mais coisas, este diagrama se tornará uma referência útil.
150
+
Abaixo está um diagrama para o ciclo de vida da instância. Você não precisa entender completamente tudo o que está acontecendo neste momento, mas conforme você for aprendendo e construindo mais coisas, este diagrama se tornará uma referência útil.
154
151
155
-

152
+
<imgsrc="/images/lifecycle.png"width="840"height="auto"style="margin: 0pxauto; display: block; max-width: 100%;"loading="lazy"alt="Diagrama do ciclo de vida">
0 commit comments