Skip to content

Commit cd1e4f9

Browse files
authored
Update instance.md
Some modifications were made.
1 parent 45296bd commit cd1e4f9

File tree

1 file changed

+65
-68
lines changed

1 file changed

+65
-68
lines changed

src/guide/instance.md

Lines changed: 65 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,61 @@
1-
---
2-
title: A Instância Vue
3-
type: guide
4-
order: 3
5-
---
1+
# A instância da Aplicação
62

7-
## Criando a Instância Vue
3+
## Criando uma instância
84

9-
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`:
106

117
```js
12-
var vm = new Vue({
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')
1515
```
1616

1717
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.
1818

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

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

2323
```
24-
Instância Raiz
24+
Root Instance
2525
└─ TodoList
2626
├─ TodoItem
27-
│ ├─ TodoButtonDelete
28-
│ └─ TodoButtonEdit
27+
│ ├─ DeleteTodoButton
28+
│ └─ EditTodoButton
2929
└─ TodoListFooter
30-
├─ TodosButtonClear
30+
├─ ClearTodosButton
3131
└─ TodoListStatistics
3232
```
3333

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

3636
## Dados e Métodos
3737

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

4040
```js
4141
// Nosso objeto de dados
42-
var data = { a: 1 }
42+
const data = { a: 1 }
4343

44-
// O objeto é adicionado à instância Vue
45-
var vm = new Vue({
46-
data: data
47-
})
44+
// O objeto é adicionado à raiz da instância
45+
const vm = Vue.createApp({
46+
data() {
47+
return data
48+
}
49+
}).mount('#app')
4850

4951
// Acessar a propriedade na instância
5052
// retorna aquilo que está no dado original
51-
// ou seja, é uma referência ao mesmo objeto!
5253
vm.a === data.a // => true
5354

5455
// Atribuir à propriedade na instância
5556
// também afeta o dado original
5657
vm.a = 2
5758
data.a // => 2
58-
59-
// ... e vice-versa
60-
data.a = 3
61-
vm.a // => 3
6259
```
6360

6461
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
6764
vm.b = 'hi'
6865
```
6966

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

7269
```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+
}
7978
}
8079
```
8180

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

8483
```js
85-
var obj = {
84+
const obj = {
8685
foo: 'bar'
8786
}
8887

8988
Object.freeze(obj)
9089

91-
new Vue({
92-
el: '#app',
93-
data: obj
94-
})
90+
const vm = Vue.createApp({
91+
data() {
92+
return obj
93+
}
94+
}).mount('#app')
9595
```
9696

9797
```html
9898
<div id="app">
9999
<p>{{ foo }}</p>
100100
<!-- não irá atualizar mais o `foo`! -->
101-
<button v-on:click="foo = 'baz'">Change it</button>
101+
<button v-on:click="foo = 'baz'">Alterar</button>
102102
</div>
103103
```
104104

105-
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:
106106

107107
```js
108-
var data = { a: 1 }
109-
var vm = new Vue({
110-
el: '#exemplo',
111-
data: data
112-
})
113-
114-
vm.$data === data // => true
115-
vm.$el === document.getElementById('exemplo') // => true
108+
const vm = Vue.createApp({
109+
data() {
110+
return {
111+
a: 1
112+
}
113+
}
114+
}).mount('#example')
116115

117-
// $watch é um método da instância
118-
vm.$watch('a', function (newValue, oldValue) {
119-
// Esta função será executada quando `vm.a` mudar
120-
})
116+
vm.$data.a // => 1
121117
```
122118

123119
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.
124120

125121
## Ciclo de Vida da Instância
126122

127-
<div class="vueschool"><a href="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.
130124

131125
Por exemplo, o gatilho [`created`](../api/#created) pode ser utilizado para executar código logo após a instância ser criada:
132126

133127
```js
134-
new Vue({
135-
data: {
136-
a: 1
128+
Vue.createApp({
129+
data() {
130+
return {
131+
a: 1
132+
}
137133
},
138-
created: function () {
134+
created() {
139135
// `this` aponta para a instância
140-
console.log('a é: ' + this.a)
136+
console.log('a é: ' + this.a) // => "a é: 1"
141137
}
142138
})
143-
// => "a é: 1"
144139
```
145140

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

144+
::: tip
148145
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+
:::
149147

150148
## Diagrama do Ciclo de Vida
151149

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

155-
![Ciclo de Vida da Instância Vue](/images/lifecycle.png)
152+
<img src="/images/lifecycle.png" width="840" height="auto" style="margin: 0px auto; display: block; max-width: 100%;" loading="lazy" alt="Diagrama do ciclo de vida">

0 commit comments

Comments
 (0)