Olá, estudante da Alura! Tudo bem? Sou Patrícia Silva e quero dar as boas-vindas a mais este curso.
Audiodescrição: Patrícia Silva se indentifica como uma mulher branca. Possui olhos castanhos e cabelos cacheados e escuros. No rosto, usa um óculos arredondado de aro preto. No corpo, veste uma camiseta verde musgo. Ao fundo, um ambiente iluminado com cores azul e lilás.
Este curso é focado em React Query, uma biblioteca que utilizaremos para fazer a integração entre o front-end e o back-end de uma aplicação já existente.
Essa aplicação é o Code Connect, uma rede social para pessoas desenvolvedoras. Como mencionado, os componentes da aplicação já estão prontos, mas ainda precisam de integração.
Na tela da aplicação, aberta no navegador, temos o trabalho pronto que desenvolveremos ao longo do curso.
Vamos fazer o front-end e o back-end se comunicarem utilizando o React Query através das ferramentas que ele nos provê. Dessa forma, conseguiremos obter os dados para listar todas as postagens, entrar na página de detalhes de cada um e agregar informações, mostrando os dados corretamente.
Trabalharemos com cache, paralelismo e queries dependentes para fazer essa agregação de dados - como categorias e a classificação desse post - e mostrá-los na tela. Além disso, aplicaremos técnicas e estratégias para tornar a aplicação e as páginas mais resilientes. Por vezes, o back-end pode ser instável, e nós, no front-end, temos que garantir uma boa disponibilidade e usabilidade desses dados.
Veremos como configurar e utilizar essa ferramenta, que nos ajudará a observar o que acontece internamente nessas chamadas assíncronas, cache e dados gerenciados pelo React Query.
Para trabalhar com React Query, você deve saber como trabalhar com React, com Async/Await e com Promises do JavaScript.
Não trabalharemos com estado global, reducers, ou nada do tipo. Basta passarmos uma função que resolva os dados que precisamos ou que lance erros, e teremos sucesso.
Nos veremos no próximo vídeo!
Como já mencionamos, esta é uma aplicação que funciona como uma rede social para pessoas desenvolvedoras. Trata-se de uma aplicação Full Stack, onde o front-end e o back-end já estão desenvolvidos, mas ainda não se comunicam. Isso é o que vamos fazer ao longo deste curso.
Antes de começar, vamos nos familiarizar com a estrutura do projeto.
Devemos clonar o projeto e acessá-lo em um editor de código como o VS Code da nossa máquina. Vamos trabalhar, basicamente, dentro da pasta "src".
Acessando o explorador lateral, temos dois grandes pilares dentro da pasta "app", que fica dentro de "src":
page.js
que lista todos os posts da aplicação;page.js
que possui detalhes dos posts, localizada dentro da subpasta "posts/[slug]".Ainda no interior da pasta "app", vale mencionar que temos as pastas:
Entretanto, não vamos trabalhar com elas, nem criar componentes. Nosso trabalho, basicamente, é fazer a integração com o front-end e o back-end.
Antes de começar a integração, temos que levantar essa aplicação. Temos alguns passos para fazer essa página renderizar de primeira.
Para isso, vamos abrir um novo terminal no VS Code, clicando nos menus superiores "Terminal > New Terminal". Nessa etapa, precisamos ter o Docker Desktop instalado, porque vamos rodar o seguinte comando na raiz do projeto:
docker compose up
O docker compose up
sobe um contêiner que vai servir a base de dados - que, por sua vez, será usada pelo back-end para recuperar e salvar os posts. Portanto, o Docker precisa ficar rodando enquanto a aplicação está em pé.
Após o comando ser executado, vamos acessar o Docker Desktop instalado. Em seu interior, na seção "Containers", veremos que este contêiner está rodando sem erros. É isso que queremos.
Name | Image | Status | Port(s) | Last started |
---|---|---|---|---|
3788-code-connect | - | Running (1/1) | - | 0 seconds ago |
Vamos deixá-lo rodando, pois é isso que precisamos.
Voltando ao terminal, este script precisa ficar executando em segundo plano, então, não podemos pará-lo. Vamos clicar no ícone de "+" no canto superior direito para abrir um novo terminal, no qual precisamos fazer a instalação das dependências do projeto.
Para instalar dependências, usaremos o yarn
. Você pode usar o que preferir, mas recomendamos o yarn
para nos alinharmos.
yarn
Após este, faremos outro comando, o yarn build
. Além de fazer o build da aplicação, esse comando vai migrar alguns dados que vão pré-popular aquele banco de dados.
yarn build
Posteriormente, renderizaremos as páginas e os posts, e fazendo isso, não teremos que nos preocupar com essas migrações de dados.
Feito isso, será que tudo funciona? Vamos subir a aplicação no localhost na porta 3000 com um yarn dev
.
yarn dev
Após isso, veremos o link do localhost da porta 3000 como retorno:
http://localhost:300
Clicando nele, abriremos a página do localhost na porta 3000 em uma nova guia do navegador. Em seu interior, veremos que se trata de uma página toda preta, com um layout básico, e sem posts.
É isso mesmo que queremos. Isso significa que subimos a aplicação com sucesso.
Vamos retornar ao VS Code para configurar e instalar o React Query. Podemos encerrar o terminal que está executando a aplicação na porta 3000 com "Ctrl+C" e instalar a biblioteca do React Query, muito apreciada no mundo do desenvolvimento.
No terminal, vamos executar o comando abaixo.
yarn add @tanstack/react-query
Ele vai instalar e baixar. É bem rápido.
Nós apenas instalamos a biblioteca. Agora, precisamos configurar o Provider.
O Provider se assemelha a uma caixa de ferramentas do React Query, a qual queremos ter acesso na aplicação.
Acessando o explorador lateral, dentro do caminho de pastas "src > app", vamos criar um arquivo chamado ReactQueryProvider.jsx
. Ele será um componente React, dentro do qual vamos configurar esse Provider todo, que explicaremos passo a passo.
Na primeira linha, vamos adicionar um use client
. Pulando uma linha, vamos importar o componente QueryClientProvider
fornecido pelo @tan-stack/react-query
. Esse componente fornece o método QueryClient
, que também importaremos para que todos os componentes que usam esse Provider tenham acesso às ferramentas do React Query.
Em breve, vamos conhecer melhor esse método.
ReactQueryProvider.jsx
:
"use client";
import { QueryClientProvider, QueryClient } from '@tanstack/react-query';
Pulando mais uma linha, vamos criar uma instância do QueryClient
, objeto usado para configurar e gerenciar o cache de todas as operações de busca de dados que faremos. Para isso, vamos criar uma constante chamada queryClient
, e vamos instanciar o QueryClient
que importamos.
"use client";
import { QueryClientProvider, QueryClient } from '@tanstack/react-query';
const queryClient = new QueryClient()
Com isso, temos esse objeto que vai nos ajudar a configurar e gerenciar tudo isso.
Pulando outra linha, vamos criar esse componente fazendo um export const ReactQueryProvider
, que vai receber uma função () => {}
com o {children}
como parâmetro.
Entre as chaves, só temos que retornar o componente QueryClientProvider
que importamos anteriormente, que vai receber o children
entre sua abertura e seu fechamento.
Esse children
vai ter acesso à instância das ferramentas do React Query. Para isso, precisamos criar a propriedade que chamaremos de client
dentro da tag de abertura do QueryClientProvider
, passando entre chaves o queryClient
que criamos.
"use client";
import { QueryClientProvider, QueryClient } from '@tanstack/react-query';
const queryClient = new QueryClient()
export const ReactQueryProvider = ({ children }) => {
return (
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
);
};
Assim, temos um Provider configurado, e tudo o que passarmos para ele via Props terá acesso a todas as ferramentas do React Query.
Agora vamos usar isso no arquivo layout.js
da pasta "app". Acessando-o no final da lista de importações, vamos importar o componente que acabamos de criar, o ReactQueryProvider
, de ./ReactQueryProvider
.
layout.js
:
import { ReactQueryProvider } from "./ReactQueryProvider";
Feito isso, precisamos encapsular a tag body
, passando ela como children
para o ReactQueryProvider
da seguinte forma:
<ReactQueryProvider>
<body>
<div className="app-container">
<div>
<Aside />
</div>
<div className="main-content">
<SearchForm />
{children}
</div>
</div>
</body>
</ReactQueryProvider>
Isso significa que todas as páginas do projeto serão renderizadas no Provider. Logo, a página que lista todos os posts, os detalhes das postagens, entre outras informações, terão acesso à caixa de ferramentas do React Query. Nesse caso, teremos uma instância, isto é, uma caixa para todos.
Nossa aplicação é bastante simples, mas há algumas situações em que não é recomendado realizar essa prática. No caso acima, criamos o componente ReactQueryProvider
separadamente, mas poderíamos ter configurado ele direto no arquivo layout.js
.
No entanto, fizemos dessa forma para organizar melhor o código, e também para que fosse possível reutilizá-lo posteriormente. Não é obrigatório encapsular todo o body
com o Provider. Em vez disso, podemos reutilizar o componente em pequenas partes da aplicação.
Por exemplo: suponha que temos um módulo de RH e um módulo financeiro. Esses módulos possuem políticas diferentes de cache e de atualização de dados. Em aplicações complexas como essa, precisamos ter muito controle sobre como iremos gerenciar os dados, então, nesse caso, não seria interessante envolver todas as páginas do layout com o Provider. Em vez disso, aplicamos o Provider em diferentes partes. Se utilizássemos um Provider em cada página, teríamos duas instâncias do React Query, que seria como se tivéssemos duas caixas de ferramentas distintas: uma apenas para o mundo do módulo de RH, e outra apenas para o mundo do módulo financeiro.
Já criamos e configuramos o Provider, que agora envolve toda a aplicação, conforme esperado. Agora, vamos partir para a parte mais legal do processo. Nos encontramos no próximo vídeo!
O curso React Query: gerenciando HTTP State possui 115 minutos de vídeos, em um total de 37 atividades. Gostou? Conheça nossos outros cursos de React em Front-end, ou leia nossos artigos de Front-end.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.