0Pricing
React Academy · Aula

Hook useSWR: busca, carregamento e estados de erro

Use useSWR com funções de busca personalizadas e gerencie declarativamente os estados de carregamento, erro e sucesso.

Hook useSWR: busca, carregamento e estados de erro é uma aula grátis de React Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.

A assinatura de useSWR

useSWR(key, fetcher, options) é o hook principal. key é a chave do cache (geralmente uma cadeia de caracteres de URL), fetcher é a função assíncrona que retorna os dados, e options é um objeto de configuração opcional.

O hook retorna um objeto com data, error, isLoading, isValidating e a função mutate.

O parâmetro chave

A chave pode ser uma URL em formato de cadeia de caracteres, uma lista de [url, params] ou null. Chaves em formato de cadeia de caracteres correspondem a solicitações GET simples. Chaves em formato de lista permitem incorporar variáveis, como userId ou filters, à identidade do cache.

Passar null desativa completamente a solicitação, o que é útil para buscas condicionais quando os dados necessários ainda não estão disponíveis.

A função de busca

A função de busca recebe a chave (ou a chave de lista expandida como argumentos) e deve retornar uma Promise. O valor resolvido torna-se data. Se a função de busca lançar uma exceção, a propriedade error será definida.

Exemplo: (url) => fetch(url).then(r => { if (!r.ok) throw new Error(r.status); return r.json(); }).

Estados de data e error

data é undefined durante o primeiro carregamento e passa a ser igual ao valor resolvido pela função de busca após o sucesso. error é undefined a menos que a função de busca lance uma exceção; nesse caso, contém o objeto de erro lançado.

Verifique if (error) para renderizar uma mensagem de erro e if (!data) para renderizar um esqueleto de carregamento, fornecendo interfaces substitutas claras.

isLoading versus isValidating

isLoading só é true quando não há dados em cache e uma solicitação está em andamento: o primeiro carregamento dessa chave. isValidating é true sempre que uma solicitação está em andamento, incluindo revalidações em segundo plano quando já existem dados em cache.

Use isLoading para telas de esqueleto; use isValidating para um indicador discreto que sinalize uma atualização em segundo plano.

SWRConfig global

SWRConfig permite definir a função de busca padrão, dedupingInterval, refreshInterval, o manipulador onError e outras opções para todas as chamadas de useSWR dentro da subárvore. Isso centraliza a configuração, em vez de repetir opções em cada hook.

Aninhe vários provedores SWRConfig para ter padrões diferentes em diferentes seções da aplicação.

Busca condicional com chave nula

Passe null como chave para ignorar a solicitação: useSWR(isLoggedIn ? '/api/user' : null, fetcher). SWR não fará a busca até que a chave se torne um valor diferente de null.

Isso é mais simples do que a opção de ignorar do React Query. A transição da chave de null para uma cadeia de caracteres aciona automaticamente a primeira busca.

Busca dependente

Encadeie hooks do SWR para solicitações dependentes: const { data: user } = useSWR('/api/me', fetcher) e depois const { data: orders } = useSWR(user ? '/api/orders/' + user.id : null, fetcher). O segundo hook espera até que o primeiro seja resolvido.

Esse padrão evita cadeias de useEffect e mantém as dependências de dados declarativas e fáceis de ler.

Deduplicação de solicitações em ação

Se um componente Header e um componente Sidebar chamarem useSWR('/api/user', fetcher), SWR fará apenas uma solicitação e compartilhará o resultado. Os dois componentes serão renderizados novamente juntos quando os dados ou o erro forem atualizados.

Essa deduplicação acontece automaticamente dentro da janela de dedupingInterval (o padrão é 2000 ms), sem nenhuma configuração adicional.

Opções úteis do SWR

refreshInterval: 5000 faz consultas a cada 5 segundos. refreshWhenHidden: false interrompe as consultas quando a aba não está visível. shouldRetryOnError: false desativa a nova tentativa automática. revalidateOnFocus: false desativa a revalidação acionada pelo foco.

Combine as opções para atender aos requisitos de atualização dos seus dados: painéis costumam usar refreshInterval, enquanto conteúdos estáticos definem revalidateOnFocus: false.

Paginação com useSWR

Para dados paginados, inclua o número da página na chave: useSWR(['/api/items', page], fetcher). Mudar de página aciona uma nova busca para essa página, mantendo as páginas anteriores em cache.

SWR também fornece useSWRInfinite para padrões baseados em cursor ou de rolagem infinita, com uma função getKey que cria chaves com base no índice da página e nos dados da página anterior.

Chave nula do SWR

O que acontece quando você passa null como chave para useSWR?

Recapitulação da lição

useSWR(key, fetcher) retorna data, error, isLoading e isValidating. Chaves null desativam a busca em solicitações condicionais e dependentes. isLoading indica o primeiro carregamento; isValidating indica qualquer solicitação em andamento. SWRConfig centraliza os padrões, e a deduplicação de solicitações entre componentes é automática.

Opções como refreshInterval, revalidateOnFocus e shouldRetryOnError ajustam detalhadamente o comportamento de atualização dos dados por hook ou globalmente.

Perguntas Frequentes

A aula “Hook useSWR: busca, carregamento e estados de erro” é grátis?

Sim — o texto completo de “Hook useSWR: busca, carregamento e estados de erro” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.

O que vou aprender em “Hook useSWR: busca, carregamento e estados de erro”?

Use useSWR com funções de busca personalizadas e gerencie declarativamente os estados de carregamento, erro e sucesso. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar React Academy?

Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Hook useSWR: busca, carregamento e estados de erro”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de React Academy?

Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Conceitos fundamentais do SWR: obsoleto enquanto revalida
  2. Hook useSWR: busca, carregamento e estados de erro
  3. Mutação e atualizações otimistas com SWR
  4. SWR versus React Query: escolhendo a ferramenta certa
← Voltar para React Academy