O analista José está implementando a interface gráfica da aplicação web JusticaSE, utilizando a biblioteca JavaScript React. A JusticaSE possui uma tela de dashboard, implementada pelo componente TelaD, que demanda alto custo computacional para ser renderizada. A fim de reduzir o custo de renderização da tela de dashboard, José encapsulou determinadas functions de TelaD em um Hook nativo da biblioteca React. O Hook utilizado por José memoriza a definição de uma function ao longo de várias renderizações de um componente. José utilizou o React Hook:
- A)useState;
useState serve para controlar estado de componente, não para memorizar funções.
- B)useEffect;
useEffect trata efeitos colaterais e ciclo de vida funcional, não a referência de uma function.
- C)useMemo;
useMemo memoriza o resultado de um cálculo, ou seja, um valor, e não a definição da função em si.
- D)useCalback;
useCallback memoriza a função entre renderizações, exatamente o que o enunciado descreveu.
- E)useContext.
useContext acessa valores do Context, sem relação com memorização de funções.
Gabarito: D
Quando o assunto é React, a ideia central é evitar trabalho desnecessário na renderização. Se um componente pesado, como um dashboard, recria funções a cada render, isso pode gerar custo extra e até disparar re-renderizações em filhos que dependem dessas funções. Para reduzir esse problema, o React oferece um Hook específico para memorizar a referência de uma função entre renderizações. Esse é o papel do useCallback. Ele devolve uma função memorizada, isto é, a mesma referência pode ser reaproveitada enquanto as dependências não mudarem. Na prática, isso ajuda a evitar recriações inúteis de funções e melhora o desempenho em componentes mais caros. Não é um Hook para estado, efeito ou contexto, e sim para preservar a identidade da função. Por isso o gabarito é a alternativa D. A banca descreveu exatamente o comportamento do useCallback: memorizar a definição de uma function ao longo de várias renderizações. É o clássico caso em que a função não precisa ser "novinha em folha" a cada render, então o React economiza esse esforço. Em termos de prova, vale guardar a associação rápida: useState cuida de estado, useEffect cuida de efeitos colaterais, useContext acessa contexto, useMemo memoriza valor calculado e useCallback memoriza função. Se a frase falar em memorizar função, acenda a luz de useCallback.