Caminho para React.useCallback ()

Você deve ter ouvido isso muitas vezes que devemos memorizar as funções de retorno de chamada usando useCallback () para evitar uma nova renderização inútil de componentes.

Mas o que exatamente é useCallback () 🤔 . Você já pensou nisso?

Deixe-me ajudá-lo a entender o que é e onde usá-lo corretamente.

Vamos primeiro entender as verificações de igualdade de funções

Antes de ver como o usamos, vamos ver o que ele resolve. Vamos escrever uma função simples que retorna uma função:

mul1 e mul2 são funções que multiplicam dois números. Eles foram criados pela função multiplicar .

As funções em JavaScript são o objeto regular. As funções mul1 e mul2 compartilham o mesmo código, mas são objetos de função diferentes. Compará-los é avaliado como falso .

É assim que os objetos JavaScript funcionam. Um objeto (incluindo um objeto de função) é igual apenas a si mesmo.

Agora, o objetivo de useCallback ()

React.useCallback () basicamente resolve a verificação de igualdade das funções que vimos acima. Diferentes objetos de função que compartilham o mesmo código são frequentemente criados dentro dos componentes React:

handleClick (função embutida) é um objeto de função diferente em cada renderização de CustomComponent .

E não há mal nenhum em ter funções declaradas in-line com React Components. Não terá um impacto prejudicial no desempenho.

Mas, em alguns casos, você precisa manter uma única instância de função entre as renderizações:

  1. Como quando a função tem algum estado interno, por exemplo, quando a função é depurada / estrangulada

2. Um componente funcional dentro dele React.memo()aceita um objeto de função prop.

Se um componente filho que aceita um retorno de chamada depende de uma verificação de igualdade referencial (por exemplo: React.memo () ou shouldComponentUpdate () ) para evitar re-renderizações desnecessárias quando seus adereços mudam, então é importante que nenhum adereço de retorno de chamada mude entre renderiza.

Portanto, no componente pai, podemos envolver a prop de retorno de chamada em useCallback () e garantir que ele está passando o mesmo objeto de função para o componente filho otimizado.

3. Quando o objeto de função é uma dependência de outros ganchos, por exemplo useEffect(..., [callback])

No exemplo acima, se myFunction faz algo que faz com que MyComponent seja reconstruído (por exemplo, se ele faz algo que muda os adereços ou o estado), você entrará em um estado de loop infinito.

Para evitar isso, envolvemos useCallback () em torno de uma função e definimos suas dependências para garantir que a função só seja recriada se suas dependências forem alteradas. Portanto, a função não é mais declarada em cada ciclo de renderização

Portanto, os casos de uso acima são quando, o gancho useCallback é útil: dados os mesmos valores de dependência, o gancho retorna a mesma instância de função entre as renderizações e aumenta o desempenho.

Espero que tenha ajudado você a entender o que realmente é useCallback ()! 😊

Obrigado por ler este artigo. Se você gostou, fique à vontade para clicar no botão 👏 para ajudar outras pessoas a encontrá-lo.

Suggested posts

Evitando as consequências devastadoras de um derrame: aprendendo com a jornada de uma família.

Evitando as consequências devastadoras de um derrame: aprendendo com a jornada de uma família.

Introdução O AVC é uma emergência médica que pode atingir qualquer pessoa a qualquer momento. Ocorre quando o fluxo sanguíneo para uma parte do cérebro é interrompido, levando a uma perda repentina da função cerebral.

Jest — Uma poderosa estrutura de teste de JavaScript

Jest — Uma poderosa estrutura de teste de JavaScript

O teste é uma parte essencial do desenvolvimento de software. Ele garante que o código seja confiável, funcione conforme o esperado e reduza a probabilidade de erros.

Related posts

VIDA SEM LIMITES

Quando você cresce, tende a ouvir que o mundo é do jeito que é e sua vida é apenas viver sua vida dentro do mundo, nunca arriscando sua vida, apenas siga um caminho definido e morra no final, e tente não bater demais nas paredes. Mas essa é uma vida muito limitada.

Aprender na semana de trabalho é mais importante do que você pensa

Aprender na semana de trabalho é mais importante do que você pensa

Muitas vezes nos encontramos lutando para implementar o que sabemos que é bom para nós. Desde dizer a um outro significativo que o amamos até lembrar de falar como um pirata, sempre haverá quem afirme que um dia, semana ou mês de eventos não é necessário porque eles já estão fazendo essas coisas.

O assassinato de Jordan Neely e o problema do racismo “patriótico”

Os EUA podem dar o passo essencial de não igualar comportamento racista a ser um bom americano?

O assassinato de Jordan Neely e o problema do racismo “patriótico”

[Alerta de gatilho: este ensaio inclui capturas de tela de pessoas elogiando o assassino de Jordan Neely.] Os policiais finalmente - e talvez com relutância - acusaram Daniel Penny, o homem que sufocou Jordan Neely até a morte, por aquele homicídio.

Journal Ouvert

Journal Ouvert

Diário aberto: uma foto por dia. Sempre fui fascinado por histórias.