1
resposta

Problema com ComponentDidUpdate React

Boa tarde! estou montando uma aplicação Web usando React, integrando com Socket.IO. Numa determinada parte do código, eu utilizo o ComponentDidUpdate (esta parte do código é a que eu coloquei aqui)

componentDidUpdate() {
    socket.on('alteraLinha', (data) => {

      let selectLinha = data.channel.split('/')[1];
      let linha = document.getElementsByClassName(`${selectLinha}`);

      let novoEstado = linha[0].getElementsByClassName('estado-raw'); //[0].textContent
      let novoIO = linha[0].getElementsByClassName('io-raw');
      let novoTipo = linha[0].getElementsByClassName('tipo-raw');
      let novoNumero = linha[0].getElementsByClassName('numero-raw');
      let novoTempo = linha[0].getElementsByClassName('tempo-raw');
      let novoId = linha[0].getElementsByClassName('id-raw');
.
.
.

O problema que acontece é que, depois de um tempo com o código rodando, ele para de funcionar, com o seguinte erro:

Cannot get property 'getElementByClassName' of undefined

O erro acontece a partir do 'let novoEstado'... Alguém sabe o que pode estar acontecendo?

1 resposta

Opa Guilherme, tudo certo?

Peço desculpas pela demora em obter um retorno.

O erro mencionado está relacionado com a função getElementsByClassName. Esse erro pode acontecer por diversos motivos, sendo assim peço que por gentileza envie o seu projeto completo.

Dessa forma posso analisar o seu código na totalidade e simular o problema para ajudá-lo de forma mais assertiva. Você pode compartilhar o link do seu projeto via Github.

Existem algumas possíveis razões para esse problema:

1. Atraso na obtenção/atualização de dados: verifique se o elemento com a classe selectLinha ainda não tenha sido renderizado no momento em que o componentDidUpdate é chamado.

2. Escopo: verifique se o escopo do código está correto. Certifique-se de que o valor de linha seja o esperado e que ele esteja acessando os elementos corretos.

Fico à disposição.

Tenha um bom dia e bons estudos.