โš› React Lifecycle ๐Ÿ”ƒ

-react-lifecycle-

O conhecimento sobre o ciclo de vida (ou lifecycle) de um componente React รฉ frequentemente solicitado em entrevistas de emprego para desenvolvedores, pois รฉ um conceito fundamental para entender como o React funciona e como otimizar o desempenho de um aplicativo.

Os mรฉtodos do ciclo de vida permitem que vocรช execute cรณdigo em momentos especรญficos durante o processo de renderizaรงรฃo de um componente, como antes de ele ser montado, atualizado ou desmontado. Isso รฉ importante para garantir que o componente se comporte da forma esperada e para evitar atualizaรงรตes desnecessรกrias, o que pode ajudar a melhorar o desempenho do aplicativo.

Alรฉm disso, os mรฉtodos do ciclo de vida tambรฉm permitem que vocรช interaja com outros sistemas, como o DOM ou APIs externas, de forma mais eficiente, pois vocรช pode controlar quando essas interaรงรตes acontecem.

3 Estรกgios React Lifecycle

Interaja com esse diagrama aqui

Abaixo veremos os trรชs estรกgios do ciclo de vida de um componente em React: (1)montagem, (2)atualizaรงรฃo e (3)desmontagem.

1. Montagem

O estรกgio de montagem รฉ a primeira fase do ciclo de vida de um componente em React. Ele comeรงa quando o componente รฉ criado e termina quando o componente รฉ inserido na รกrvore de componentes.

Durante o estรกgio de montagem, o componente passa pelos seguintes mรฉtodos do ciclo de vida:

1.1 constructor()

O mรฉtodo constructor รฉ um mรฉtodo especial em uma classe em JavaScript que รฉ chamado quando uma nova instรขncia da classe รฉ criada. No React, o mรฉtodo constructor รฉ chamado quando um componente รฉ criado.

A sintaxe do mรฉtodo constructor รฉ a seguinte:

Image description

O mรฉtodo constructor recebe um parรขmetro props, que รฉ um objeto que contรฉm as propriedades enviadas para o componente.

O mรฉtodo constructor รฉ utilizado para inicializar o estado do componente e para vincular mรฉtodos de instรขncia ao prรณprio componente. Por exemplo, vocรช pode utilizar o mรฉtodo constructor para definir o estado inicial de um componente ou para vincular um mรฉtodo de instรขncia ao evento onClick de um botรฃo.

Aqui estรก um exemplo de como o mรฉtodo constructor pode ser utilizado em um componente React (Files>src>App.jsx):

Neste exemplo, o mรฉtodo constructor รฉ utilizado para inicializar o estado count com o valor 0 e para vincular o mรฉtodo handleClick ao evento onClick do botรฃo. Quando o botรฃo รฉ clicado, o mรฉtodo handleClick รฉ
chamado e atualiza o estado do componente, fazendo com que o componente seja renderizado novamente com o novo valor do estado count.

1.2 render()

O mรฉtodo render() รฉ o รบnico mรฉtodo obrigatรณrio em um class-component. (reactjs.org)

O mรฉtodo render รฉ um dos mรฉtodos mais importantes do ciclo de vida de um componente em React, pois รฉ nele que o componente รฉ renderizado na tela. Quando o mรฉtodo render รฉ chamado, o componente gera o HTML que serรก exibido para o usuรกrio e o envia para o DOM para ser renderizado.

A sintaxe do mรฉtodo render รฉ a seguinte:

Image description

O mรฉtodo render deve sempre retornar um รบnico elemento React, que pode ser um elemento HTML ou outro componente.
Aqui estรก um exemplo de um componente em React que utiliza o mรฉtodo render para gerar o HTML que serรก renderizado:
(Acompanhe em "Show files>src>App.jsx")

Neste exemplo, o componente MyComponent tem um estado chamado name, que รฉ inicializado com o valor “John” no mรฉtodo constructor. O mรฉtodo render รฉ entรฃo chamado para gerar o HTML que serรก renderizado pelo componente. No caso, o mรฉtodo render retorna um elemento div que contรฉm um tรญtulo e um parรกgrafo, ambos utilizando o valor do estado name para exibir o nome do usuรกrio.

Quando o componente รฉ renderizado, o HTML gerado pelo mรฉtodo render serรก exibido para o usuรกrio, como mostrado abaixo:

Image description

1.3 componentDidMount()

O mรฉtodo componentDidMount() รฉ um mรฉtodo do ciclo de vida de um componente em React que รฉ chamado imediatamente apรณs um componente ser montado (inserido na รกrvore de componentes). Ele รฉ chamado apenas uma vez na vida de um componente e รฉ a primeira oportunidade que o componente tem de interagir com o DOM e outros sistemas.

A sintaxe do mรฉtodo componentDidMount รฉ a seguinte:

Image description

O mรฉtodo componentDidMount รฉ chamado imediatamente apรณs o mรฉtodo render do componente.

Ele รฉ รบtil para realizar operaรงรตes que precisam ser executadas apรณs o componente ser renderizado, como fazer solicitaรงรตes HTTP, configurar eventos de DOM ou iniciar animaรงรตes.

Por exemplo, vocรช pode utilizar o mรฉtodo componentDidMount para fazer uma solicitaรงรฃo HTTP para obter os dados de um servidor e atualizar o estado do componente com os dados retornados.

Aqui estรก um exemplo de como esse mรฉtodo pode ser utilizado em um componente React:
(Acompanhe em "Show files>src>App.jsx")

No cรณdigo acima, o componente MyComponent รฉ criado usando a classe React.Component do React. Ele possui um construtor que inicializa o estado inicial do componente com um objeto vazio chamado data.

O mรฉtodo componentDidMount รฉ chamado imediatamente apรณs o mรฉtodo render do componente. Isso significa que, quando o mรฉtodo componentDidMount รฉ chamado, o componente jรก foi renderizado e inserido na รกrvore de componentes.

No mรฉtodo componentDidMount, uma solicitaรงรฃo HTTP รฉ feita para a API da CoinGecko para obter os dados do Bitcoin. Quando a resposta รฉ recebida, o mรฉtodo then รฉ chamado com a resposta e o mรฉtodo json รฉ usado para converter a resposta em um objeto JavaScript. Em seguida, o mรฉtodo
setState รฉ chamado para atualizar o estado do componente com os dados retornados pela API.

O mรฉtodo render รฉ chamado para renderizar o componente com o preรงo atual do Bitcoin em dรณlares. Se o estado data do componente tiver um valor, o preรงo atual do Bitcoin รฉ exibido. Se o estado data for nulo, a mensagem
“Loading…” รฉ exibida.

2. Atualizaรงรฃo

O estรกgio de atualizaรงรฃo do ciclo de vida de um componente em React ocorre quando o componente รฉ atualizado com novas propriedades ou estado.

Durante o estรกgio de atualizaรงรฃo, o componente passa pelos seguintes mรฉtodos do ciclo de vida:

2.1 render()

O mesmo mรฉtodo render do estรกgio de montagem รฉ chamado quando o componente รฉ atualizado com novas propriedades ou estado.

Aqui estรก um exemplo de um componente em React que usa o esse mรฉtodo para refletir as alteraรงรตes na interface do usuรกrio:
(Acompanhe em "Show files>src>App.jsx")

Neste exemplo, o componente MyComponent tem um estado chamado age, que รฉ inicializado com a propriedade initialAge passada como propriedade para o componente. Ele tambรฉm tem um mรฉtodo handleAgeClick, que รฉ chamado quando o usuรกrio clica no botรฃo “Adicionar ano”. Quando o mรฉtodo รฉ chamado, ele atualiza o estado age do componente com o valor atual da idade mais um.

O mรฉtodo componentDidUpdate รฉ chamado sempre que o componente รฉ atualizado, o que ocorre quando o componente รฉ renderizado pela primeira vez ou quando ocorre uma mudanรงa nas propriedades ou estado do componente. Neste caso, o mรฉtodo รฉ usado para imprimir uma mensagem no console quando a propriedade name ou o estado age do componente sรฃo alterados.

Por fim, o mรฉtodo render รฉ chamado para renderizar o componente com as novas propriedades ou estado. Ele retorna um elemento div que exibe o nome e a idade do componente, bem como um botรฃo que, quando clicado, aumenta a idade do componente em um ano.

2.2 componentDidUpdate()

O mรฉtodo componentDidUpdate รฉ um mรฉtodo do ciclo de vida de um componente em React que รฉ chamado imediatamente apรณs o mรฉtodo render quando o componente รฉ atualizado, ou seja, quando hรก uma mudanรงa nas propriedades ou estado do componente.

Esse mรฉtodo รฉ รบtil para realizar operaรงรตes que precisam ser executadas apรณs o componente ser atualizado, como fazer solicitaรงรตes HTTP, atualizar o DOM de forma eficiente, etc.

Esse mรฉtodo รฉ chamado com dois parรขmetros: os valores das propriedades e estado do componente antes da atualizaรงรฃo (prevProps e prevState) e o objeto snapshot, que รฉ um valor opcional que pode ser passado pelo mรฉtodo getSnapshotBeforeUpdate.

Aqui estรก um exemplo de um componente em React que usa o mรฉtodo componentDidUpdate para atualizar o grรกfico de um dashboard quando os dados sรฃo alterados:

No cรณdigo acima, o mรฉtodo componentDidUpdate รฉ chamado sempre que o componente รฉ atualizado.

Ao mรฉtodo componentDidUpdate sรฃo passados dois parรขmetros: prevProps e prevState, que sรฃo as propriedades e o estado do componente imediatamente antes da atualizaรงรฃo. Isso permite que o componente compare as propriedades e o estado atuais com os valores anteriores e, se necessรกrio, execute alguma aรงรฃo.

No caso do cรณdigo acima, o mรฉtodo componentDidUpdate รฉ utilizado para verificar se a propriedade data do componente foi alterada. Se a propriedade data for diferente da propriedade data do componente anterior (prevProps.data !== this.props.data), o mรฉtodo updateChart รฉ chamado.

Em suma, o mรฉtodo componentDidUpdate รฉ usado no cรณdigo acima para detectar alteraรงรตes nas propriedades do componente e, quando isso ocorre, chamar o mรฉtodo updateChart para atualizar o grรกfico com os novos dados.

3. Desmontagem: componentWillUnmount()

O estรกgio de desmontagem รฉ o รบltimo estรกgio do ciclo de vida de um componente em React. Ele ocorre quando o componente รฉ removido da รกrvore de componentes.

Atualmente, o React tem apenas um mรฉtodo interno que รฉ chamado quando um componente รฉ desmontado: componentWillUnmount

O mรฉtodo componentWillUnmount รฉ chamado imediatamente antes de um componente ser desmontado e destruรญdo. Ele รฉ usado para limpar qualquer lรณgica ou recursos que o componente possa ter usado durante o seu ciclo de vida. Alguns exemplos comuns de uso do componentWillUnmount incluem:

  • Desinscrever-se de eventos de mouse ou teclado;
  • Cancelar solicitaรงรตes HTTP pendentes;
  • Remover elementos de DOM criados durante o ciclo de vida do componente;
  • Limpar temporizadores ou intervalos de tempo criados pelo componente.

Abaixo, temos um caso comum de uso do componentWillUnmount para cancelar event listeners ou outras operaรงรตes assรญncronas que foram iniciadas no componentDidMount:

No exemplo acima, o mรฉtodo componentWillUnmount รฉ usado para cancelar um intervalo de tempo criado pelo mรฉtodo setInterval. Quando o componente รฉ desmontado, o intervalo รฉ cancelado, evitando que ele continue a ser executado e consumindo recursos desnecessariamente.

ร‰ importante lembrar de que o mรฉtodo componentWillUnmount รฉ chamado apenas uma vez, imediatamente antes do componente ser destruรญdo, portanto nรฃo รฉ possรญvel atualizar o estado do componente neste mรฉtodo. Alรฉm disso, nรฃo รฉ possรญvel usar o setState neste mรฉtodo, pois o componente jรก estรก prestes a ser destruรญdo e nรฃo serรก renderizado novamente.

marcelopetry.com

Total
0
Shares
Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Post
slack-next-gen-platform-–-button-interactions

Slack Next-gen Platform – Button Interactions

Next Post
how-to-code-an-android-app-that-shows-barometer-data?-step-by-step-guide-with-code

How to code an Android app that shows barometer data? Step by step guide with code

Related Posts