Skip to content

Commit 24fa9d2

Browse files
authored
Review on guide/state-management
1 parent 95758d6 commit 24fa9d2

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

src/guide/state-management.md

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
# Gerenciamento de estado
1+
# Gerenciamento de Estado
22

3-
## Implementação oficial baseada em Flux
3+
## Implementação Oficial Estilo Flux
44

55
Grandes aplicações podem frequentemente crescer em complexidade, devido à múltiplas partes do estado da aplicação espalhadas em vários componentes e em interações entre eles. Para resolver esse problema, Vue oferece o [Vuex](https://github.com/vuejs/vuex), nossa própria biblioteca de gerenciamento de estado inspirada na arquitetura Elm. Ele é também integrado ao [vue-devtools](https://github.com/vuejs/vue-devtools), permitindo uma [navegação pelo histórico de mudanças de estado](https://raw.githubusercontent.com/vuejs/vue-devtools/master/media/demo.gif) (_time travel debugging_) sem qualquer configuração inicial.
66

77
### Informação para Desenvolvedores React
88

9-
Se você vem do React, deve estar se perguntando como o Vuex se compara ao [Redux](https://github.com/reactjs/redux), a implementação Flux mais popular do ecossistema. O Redux é agnóstico quanto à camada _view_, de forma que ele pode ser usado facilmente com Vue através de [bindings simples](https://classic.yarnpkg.com/en/packages?q=redux%20vue&p=1). O Vuex é diferente por **saber** que está em uma aplicação Vue. Isso permite uma melhor integração com Vue ao fornecer uma API mais intuitiva e uma melhor experiência de desenvolvimento.
9+
Se você vem do React, deve estar se perguntando como o Vuex se compara ao [Redux](https://github.com/reactjs/redux), a implementação Flux mais popular do ecossistema. O Redux é agnóstico quanto à camada _view_, de forma que ele pode ser usado facilmente com Vue através de [ligações simples](https://classic.yarnpkg.com/en/packages?q=redux%20vue&p=1). O Vuex é diferente por **saber** que está em uma aplicação Vue. Isso permite uma melhor integração com Vue ao fornecer uma API mais intuitiva e uma melhor experiência de desenvolvimento.
1010

11-
## Gerenciamento de estado simples do zero
11+
## Gerenciamento de Estado Simples do Zero
1212

13-
Frequentemente as pessoas esquecem que a fonte de verdade de aplicações Vue são os objetos `data` - uma instância Vue apenas direciona acesso à eles. Portanto, se você possui uma parte do estado que deveria ser comportilhado entre instâncias múltiplas, você pode usar um método [reativo](/guide/reactivity-fundamentals.html#declaring-reactive-state) para tornar um objeto reativo.
13+
Frequentemente as pessoas esquecem que a fonte de verdade de aplicações Vue são os objetos reativos `data` - uma instância Vue apenas direciona acesso à eles. Portanto, se você possui uma parte do estado que deveria ser compartilhado entre instâncias múltiplas, você pode usar um método [`reactive`](/guide/reactivity-fundamentals.html#declaring-reactive-state) para tornar um objeto reativo.
1414

1515
```js
1616
const sourceOfTruth = Vue.reactive({
17-
message: 'Hello'
17+
message: 'Olá'
1818
})
1919

2020
const appA = Vue.createApp({
@@ -36,48 +36,48 @@ const appB = Vue.createApp({
3636
<div id="app-b">App B: {{ message }}</div>
3737
```
3838

39-
Agora, sempre que `sourceOfTruth` mudar, tanto `appA` e `appB` irão atualizar suas _views_ automaticamente. Possuímos uma fonte de verdade única agora, porém a depuração vira um pesadelo. Qualquer dado pode ser modificado em qualquer parte de nossa aplicação a qualquer momento, sem deixar rastro algum.
39+
Agora, sempre que `sourceOfTruth` mudar, tanto `appA` e `appB` irão atualizar suas _views_ automaticamente. Possuímos uma única fonte de verdade agora, porém a depuração vira um pesadelo. Qualquer dado pode ser modificado em qualquer parte de nossa aplicação a qualquer momento, sem deixar rastro algum.
4040

4141
```js
4242
const appB = Vue.createApp({
4343
data() {
4444
return sourceOfTruth
4545
},
4646
mounted() {
47-
sourceOfTruth.message = 'Goodbye' // ambas aplicações irão renderizar "Goodbye"
47+
sourceOfTruth.message = 'Adeus' // ambas aplicações irão renderizar "Adeus"
4848
}
4949
}).mount('#app-b')
5050
```
5151

52-
Para ajudar a resolver esse problema, podemos adotar o padrão **store**.
52+
Para ajudar a resolver esse problema, podemos adotar o padrão **store**:
5353

5454
```js
5555
const store = {
5656
debug: true,
5757

5858
state: Vue.reactive({
59-
message: 'Hello!'
59+
message: 'Olá!'
6060
}),
6161

6262
setMessageAction(newValue) {
6363
if (this.debug) {
64-
console.log('setMessageAction triggered with', newValue)
64+
console.log('setMessageAction disparado com', newValue)
6565
}
6666

6767
this.state.message = newValue
6868
},
6969

7070
clearMessageAction() {
7171
if (this.debug) {
72-
console.log('clearMessageAction triggered')
72+
console.log('clearMessageAction disparado')
7373
}
7474

7575
this.state.message = ''
7676
}
7777
}
7878
```
7979

80-
Perceba que todas ações que modificam o estado da store são colocadas dentro da própria store. Esse tipo de gerenciamento de estado centralizado facilita a compreensão de que tipo de mutações podem acontecer e como elas são disparadas. Agora, temos um _log_ de mudanças para quando algo der errado.
80+
Perceba que todas as ações que modificam o estado da store são colocadas dentro da própria store. Esse tipo de gerenciamento de estado centralizado facilita a compreensão de que tipo de mutações podem acontecer e como elas são disparadas. Agora, temos um _log_ de mudanças para quando algo der errado.
8181

8282
Além disso, cada instância/componente pode ainda possuir e gerenciar seu estado privado:
8383

@@ -96,7 +96,7 @@ const appA = Vue.createApp({
9696
}
9797
},
9898
mounted() {
99-
store.setMessageAction('Goodbye!')
99+
store.setMessageAction('Adeus!')
100100
}
101101
}).mount('#app-a')
102102

@@ -110,12 +110,12 @@ const appB = Vue.createApp({
110110
}).mount('#app-b')
111111
```
112112

113-
![Gerenciamento de estado](/images/state.png)
113+
![Gerenciamento de Estado](/images/state.png)
114114

115-
::: Dica
116-
Você não deve substituir o objeto de estado original - os componentes e a store precisam compartilhar a referência para o objeto, de forma que as mutações sejam acompanhadas.
115+
::: tip Dica
116+
Você jamais deve substituir o objeto `state` original - os componentes e a store precisam compartilhar a referência para o mesmo objeto, de forma que as mutações sejam acompanhadas.
117117
:::
118118

119-
Ao desenvolvermos uma convenção em que componentes não devem modificar diretamente o estado pertencente à store, mas sim disparar eventos que comuniquem à store que realize ações, nós chegamos na arquitetura [Flux](https://facebook.github.io/flux/). A vantagem dessa convenção é que podemos registrar todas mudanças de estado e implementar _helpers_ avançados de depuração, tais como _logs_ de mutação, _snaptshots_ e repetição de histórico (_history re-rolls_) / navegação de histórico (_time travel_).
119+
Ao desenvolvermos uma convenção em que componentes não devem modificar diretamente o estado pertencente à store, mas sim disparar eventos que comuniquem a store à realizar ações, nós chegamos na arquitetura [Flux](https://facebook.github.io/flux/). A vantagem dessa convenção é que podemos registrar todas as mudanças de estado e implementar auxiliares avançados de depuração, tais como _logs_ de mutação, _snapshots_ e repetição de histórico (_history re-rolls_) / navegação de histórico (_time travel_).
120120

121-
O que nos leva de volta ao [Vuex](https://github.com/vuejs/vuex), então se você leu até aqui, provavelmente é hora de testá-lo!
121+
O que nos leva totalmente de volta ao [Vuex](https://github.com/vuejs/vuex), então se você leu até aqui, provavelmente é hora de testá-lo!

0 commit comments

Comments
 (0)