Skip to content

Commit 20c2f6d

Browse files
committed
Translatin code snippets and reviewing parallel data
1 parent 338a79d commit 20c2f6d

File tree

1 file changed

+22
-22
lines changed

1 file changed

+22
-22
lines changed

content/blog/2019-11-06-building-great-user-experiences-with-concurrent-mode-and-suspense.md

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ No exemplo acima do `<Post>`, nós idealmente deveríamos mostrar o conteudo mai
5454

5555
Isso pode soar difícil de alcançar -- mas essas restrições são na verdade incrivelmente helpful. Elas descartam uma série de abordagens e nos desenham um rascunho da solução. Isso nós leva os padrões chave que nós implementamos no in Relay Hooks, e que podem ser adaptados para outras biblotecas de obtenção de dados. Veremos cada um de maneira a nos mostrar como podem nos ajudar a alcançar nosso objetivo de experiências de carregamento rápidas e encatadoras:
5656

57-
1. Dados paralelos e árvores de visualização
57+
1. Dados em paralelo e árvores de visualização
5858
2. Carregar em manipuladores de evento
5959
3. Carregar dados incrementalmente
6060
4. Tratar código como dado
@@ -68,28 +68,28 @@ Aqui mostramos como isso funciona no Relay Hooks. Continuando nosso exemplo de u
6868
```javascript
6969
// Post.js
7070
function Post(props) {
71-
// Given a reference to some post - `props.post` - *what* data
72-
// do we need about that post?
71+
// Dado uma referência para alguma postagem - `props.post` - *de quais* dados
72+
// nós precisamos sobre essa postagem?
7373
const postData = useFragment(graphql`
7474
fragment PostData on Post @refetchable(queryName: "PostQuery") {
7575
author
7676
title
77-
# ... more fields ...
77+
# ... mais campos ...
7878
}
7979
`, props.post);
8080

81-
// Now that we have the data, how do we render it?
81+
// Agora que nós temos os dados, como renderizá-lo?
8282
return (
8383
<div>
8484
<h1>{postData.title}</h1>
8585
<h2>by {postData.author}</h2>
86-
{/* more fields */}
86+
{/* mais campos */}
8787
</div>
8888
);
8989
}
9090
```
9191

92-
Embora o GraphQL esteja escrito junto ao componente, Relay tem um passo de build (Compilador do Relay) que extrai essas dependências-de-dados em arquivos separados e agrega o GraphQL para cada visualização em uma única consulta. Então nós obtemos os benefícios de combinar responsabilidades, enquanto no tempo de execução temos dados paralelos e árvores de visualização. Outras bibliotecas poderiam alcançar resultados similares ao permitir que os desenvolvedores definam lógica de obtenção de dados em um arquivo irmão (talvez `Post.data.js`), ou então integrar com um bundler para permitir definição de dependência de dados com código de interface de usuário e automaticamente extraí-lo, de maneira semelhante ao Compilador do Relay.
92+
Embora o GraphQL esteja escrito junto ao componente, Relay tem um passo de build (Compilador do Relay) que extrai essas dependências-de-dados em arquivos separados e agrega o GraphQL para cada visualização em uma única consulta. Então nós obtemos os benefícios de combinar responsabilidades, enquanto no tempo de execução temos dados em paralelo e árvores de visualização. Outras bibliotecas poderiam alcançar resultados similares ao permitir que os desenvolvedores definam lógica de obtenção de dados em um arquivo irmão (talvez `Post.data.js`), ou então integrar com um bundler para permitir definição de dependência de dados com código de interface de usuário e automaticamente extraí-lo, de maneira semelhante ao Compilador do Relay.
9393

9494
O segredo é que independente da tecnologia que estamos usando para carregar nossos dados -- GraphQL, REST, etc -- nós podemos separar *quais* dados carregar de como e quando fazê-lo. Mas uma vez feito isso, como e quando nós *carregamos* nossos dados?
9595

@@ -104,21 +104,21 @@ Conceitualmente, nós queremos que a definição de cada rota inclua duas coisas
104104
```javascript
105105
// PostRoute.js (GraphQL version)
106106

107-
// Relay generated query for loading Post data
107+
// Consulta do Relay para carregamento dos dados do Post
108108
import PostQuery from './__generated__/PostQuery.graphql';
109109

110110
const PostRoute = {
111-
// a matching expression for which paths to handle
111+
// uma expressão que associa qual rota tratar
112112
path: '/post/:id',
113113

114-
// what component to render for this route
114+
// que componente renderizar para essa rota
115115
component: React.lazy(() => import('./Post')),
116116

117-
// data to load for this route, as function of the route
118-
// parameters
117+
// dados a serem carregados para essa rota, como uma função dos parâmetros
118+
// da rota
119119
prepare: routeParams => {
120-
// Relay extracts queries from components, allowing us to reference
121-
// the data dependencies -- data tree -- from outside.
120+
// Relay extrai consultas de componentes, nos permitindo referenciar
121+
// as dependências de dados -- árvore de dados -- de fora.
122122
const postData = preloadQuery(PostQuery, {
123123
postId: routeParams.id,
124124
});
@@ -139,20 +139,20 @@ Por definição, um roteador pode:
139139
Esta abordagem pode ser generalizada para outras soluções de obtenção de dados. Um aplicativo que usa REST poderia definir uma rota dessa forma:
140140

141141
```javascript
142-
// PostRoute.js (REST version)
142+
// PostRoute.js (versão em REST)
143143

144-
// Manually written logic for loading the data for the component
144+
// Lógica escrita manualmente para carregamento dos dados para o componente
145145
import PostData from './Post.data';
146146

147147
const PostRoute = {
148-
// a matching expression for which paths to handle
148+
// uma expressão que associa qual rota tratar
149149
path: '/post/:id',
150150

151-
// what component to render for this route
151+
// que componente renderizar para essa rota
152152
component: React.lazy(() => import('./Post')),
153153

154-
// data to load for this route, as function of the route
155-
// parameters
154+
// dados a serem carregados para essa rota, como uma função dos parâmetros
155+
// da rota
156156
prepare: routeParams => {
157157
const postData = preloadRestEndpoint(
158158
PostData.endpointUrl,
@@ -185,7 +185,7 @@ function Post(props) {
185185
author
186186
title
187187
188-
# fetch data for the comments, but don't block on it being ready
188+
# obter dados para os comentários, mas sem bloquear até que estejam carregados
189189
...CommentList @defer
190190
}
191191
`, props.post);
@@ -194,7 +194,7 @@ function Post(props) {
194194
<div>
195195
<h1>{postData.title}</h1>
196196
<h2>by {postData.author}</h2>
197-
{/* @defer pairs naturally with <Suspense> to make the UI non-blocking too */}
197+
{/* @defer trabalha naturalmente com <Suspense> para criar uma interface de usuário não bloqueada também */}
198198
<Suspense fallback={<Spinner/>}>
199199
<CommentList post={postData} />
200200
</Suspense>

0 commit comments

Comments
 (0)