Durante o desenvolvimento de um módulo de chat em uma aplic...

Próximas questões
Com base no mesmo assunto
Q3953501 Programação
Durante o desenvolvimento de um módulo de chat em uma aplicação React JS, um programador precisa garantir que a conexão com o servidor via WebSocket seja estabelecida assim que o componente for montado na tela e devidamente encerrada, quando o componente for removido (desmontado), para evitar vazamentos de memória (memory leaks).
Para implementar essa lógica em um componente funcional utilizando o hook useEffect, o desenvolvedor deve estruturar o código de modo que a função de limpeza, responsável pelo fechamento da conexão, seja executada.
De acordo com as especificações do React, essa função de limpeza deve ser
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: A

Fundamento decisivo: A assinatura oficial do useEffect prevê que a limpeza fique no retorno da função de setup; por isso, a alternativa A é a que corresponde ao protocolo do React para encerrar a conexão.

Tema central: Cleanup no useEffect
Análise das alternativas
A
Certa
A alternativa A está correta porque, no React, a função de cleanup é retornada pela função de setup passada ao useEffect. Esse retorno é o mecanismo usado para desfazer o effect, inclusive na desmontagem do componente.
B
Errada
Está errada porque o useEffect não possui terceiro argumento para callback de limpeza; a assinatura oficial é useEffect(setup, dependencies?).
C
Errada
Está errada porque a limpeza não é definida em um segundo useEffect; ela pertence ao retorno do mesmo effect que cria a conexão.
D
Errada
Está errada porque o React não prevê bloco finally externo ao hook como mecanismo de cleanup.
E
Errada
Está errada porque componentWillUnmount é método de componente de classe, não de componente funcional.
Pegadinha da questão
Confundir a função retornada pelo useEffect com um suposto terceiro argumento do hook ou com o ciclo de vida de componentes de classe.
Dica para questões semelhantes
  • Em useEffect, a limpeza vem do retorno da função de setup.
  • Antes de aceitar uma solução, confira a assinatura oficial do hook.
  • Não misture hooks de componente funcional com métodos de ciclo de vida de classe.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo