Aprender e entender React - o tutorial prático

Otimização de componentes com useCallback em React

Todos os vídeos do tutorial Aprender e entender React - o tutorial prático

O processo de renderização em aplicações React é muitas vezes um fator decisivo para o desempenho. Se os componentes são renderizados desnecessariamente, isso pode levar a uma desaceleração percetível da aplicação. Para evitar esse problema, o React oferece hooks como o useCallback. Neste tutorial, você aprenderá como usarCallback para otimizar o desempenho de renderização de seus componentes, especialmente quando props de callback são usados.

Principais lições

  • useCallback salva uma função entre ciclos de renderização.
  • A utilização correta de useCallback reduz as renderizações desnecessárias.
  • Ao usar useCallback, preste sempre atenção às dependências.

Instruções passo a passo

1. introdução às props de callback

Para compreender a função de useCallback, deve primeiro clarificar o significado das props de callback. As props de callback são funções que são passadas para componentes filhos. No nosso exemplo, temos um simples componente de botão que recebe uma função como prop para executar uma ação.

Otimização de componentes com useCallback em React

Com essa estrutura, imagine que, quando o componente filho é renderizado, a função de retorno de chamada também é gerada repetidamente. Isso significa que toda vez que o componente pai é renderizado novamente, a função de retorno de chamada também é alterada, mesmo que sua lógica não mude.

2. implementação sem useCallback

Vamos supor que já criou o seu componente de botão sem utilizar useCallback. Neste caso, o seu código pode ter o seguinte aspeto: declara a função onClick diretamente no componente principal. Se o estado do componente principal mudar, o botão é renderizado novamente e a função de retorno de chamada é criada novamente.

3. Introdução de useCallback

É aqui que a função useCallback entra em ação. Com a função useCallback, é possível "armazenar em cache" a função de retorno de chamada para que ela seja gerada novamente apenas quando as dependências especificadas forem alteradas. Para usar useCallback corretamente, você precisa envolver sua função de retorno de chamada no gancho.

Isso faz com que a função original seja lembrada enquanto as dependências permanecerem inalteradas. Isso significa que, se o componente pai for renderizado repetidamente, a função antiga será sempre mantida, desde que as dependências não sejam alteradas.

4. definir dependências

Este é também o ponto crucial quando se utiliza useCallback. É necessário garantir que são definidas as dependências corretas na matriz vazia. Se tiver ligado a função a variáveis, estas variáveis devem estar na matriz de dependências.

Se forem feitas alterações no estado, o React entenderá que a função precisa ser gerada novamente porque uma das variáveis especificadas foi alterada.

5. testando a implementação

Para ter certeza de que a implementação funciona, você pode testar o aplicativo no navegador. Se clicar no botão sem utilizar useCallback, verá que o botão e outros componentes são renderizados repetidamente.

Otimização de componentes com useCallback em React

Agora adicione useCallback e verifique o desempenho. Se tudo estiver implementado corretamente, o botão deverá deixar de ser apresentado quando a prop deixar de mudar.

6. Pesar os prós e os contras

É importante ponderar a utilização de useCallback. Em muitos casos, a sua utilização requer um esforço adicional, e pode acontecer que a otimização não seja necessária em componentes mais simples. Por isso, verifique se vale a pena utilizar useCallback com base na complexidade dos seus componentes.

Otimização de componentes com useCallback em React

Note-se que useCallback é realmente benéfico se também utilizar a otimização memo. Caso contrário, poderá estar apenas a aceder à mesma função de retorno de chamada enquanto o seu componente continua a ser renderizado repetidamente.

Otimização de componentes com useCallback em React

Resumo

A implementação de useCallback permite evitar renderização desnecessária e otimizar o desempenho do seu aplicativo React. Certifique-se sempre de definir as dependências corretas e considere o uso do hook dependendo da complexidade do seu componente.

Perguntas frequentes

Como o useCallback funciona?useCallback armazena uma função entre ciclos de renderização e só a regenera quando uma dependência especificada por você é alterada.

Quando devo usar useCallback?useCallback se você tiver props de callback e esses props causarem renderizações indesejadas em componentes filhos.

Preciso sempre de usar useCallback para todas as funções?Não, só deve usar useCallback se isso ajudar o desempenho da sua aplicação, especialmente para componentes mais complexos e de renderização frequente.

Que dependências devo especificar? Especifiquetodas as variáveis que são utilizadas na sua função de retorno de chamada e que podem mudar na matriz de dependências.

Posso usar useCallback sozinho? não necessariamente. Uma combinação com outros hooks, como React.memo, é frequentemente recomendada para obter as melhorias de desempenho desejadas.