Na fase de desmontagem do ciclo de vida do React, trabalhamos apenas com um método, o componentWillUnmount(). Apenas um dos métodos abaixo não faz sentido executarmos dentro desse método, marque a opção correta: *Considere unsubscribeFromFriendStatus uma função de uma API de chat que remove a inscrição de um usuário.
Questão
Na fase de desmontagem do ciclo de vida do React, trabalhamos apenas com um método, o componentWillUnmount(). Apenas um dos métodos abaixo não faz sentido executarmos dentro desse método, marque a opção correta: *Considere unsubscribeFromFriendStatus uma função de uma API de chat que remove a inscrição de um usuário.
Alternativas
A) alert("Componente Removido");
B) console.log("Componente Removido");
C) this.setState({ display: false });
D) clearInterval(this.timerID);
E) ChatAPI.unsubscribeFromFriendStatus(this.props.friend.id,this.handleStatusChange);
Explicação
No método componentWillUnmount(), o componente está prestes a ser removido da árvore (desmontagem). Essa fase é destinada a limpezas (cleanup), como:
- Cancelar timers/intervalos (ex.: ).
- Remover inscrições/listeners (unsubscribe) para evitar vazamentos de memória.
- Registrar logs/efeitos colaterais simples (como ou até , embora não seja boa prática de UX, ainda “faz sentido” como efeito colateral).
Já chamar this.setState(...) não faz sentido no componentWillUnmount() porque:
- o componente está sendo desmontado e não deve iniciar uma nova atualização de estado/render;
- isso pode gerar warnings do tipo “Can't perform a React state update on an unmounted component”.
Analisando as alternativas:
- A e B: são efeitos colaterais (mensagem/log). Podem ser executados (mesmo que
alertnão seja recomendável). - D: limpeza de timer → exatamente o que se faz no unmount.
- E: unsubscribe na API de chat → exatamente o que se faz no unmount.
- C:
setStatedurante desmontagem → não faz sentido.
Alternativa correta: (C).