Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

105
Visualizações
useEffect not printing div element react hooks

I have this Chart component. useEffect works as componentDidMount() so it should first render the DOM and then should call the fetchChartData. But the issue I am facing here is I get null in console.log("111111111", document.getElementById("data-consumed")) at first and after that I get the DOM elements and resulting I get error from the Highcharts

Uncaught (in promise) Error: Highcharts error #13

So I need to know why this is happening as useEffect works as componentDidMount and should render the DOM first.

const Chart2 = (props) => {
  const fetchChartData = async () => {
    const { fetchChartData } = props;
    const startDate = moment().startOf("year").toISOString();
    const endDate = moment().endOf("year").toISOString();
    const data = await fetchChartData({ startDate, endDate, userId: "XXXXXXX" });
    console.log("111111111", document.getElementById("data-consumed"))
    Highcharts.chart("data-consumed", {
      chart: {
        type: "column",
      },
      title: {
        text: null,
      },
      subtitle: {
        text: "Source: WorldClimate.com",
      },
      xAxis: {
        categories: data.map(({ _id }) => _id),
        crosshair: true,
      },
      yAxis: {
        min: 0,
        title: {
          text: "Rainfall (mm)",
        },
      },
      plotOptions: {
        column: {
          pointPadding: -0.1,
          borderWidth: 0,
          color: "#5036D6",
        },
      },
      series: [
        {
          name: null,
          data: data.map(({ processingStorage }) => processingStorage),
        },
      ],
    });
  };

  useEffect(() => {
    fetchChartData();
  }, []);

  return (
    <div className="chart-container cursor-pointer">
      <div className="chart-block">
        <h4>Data Consumed</h4>
        <div id="data-consumed" className="graph-block" />
      </div>
    </div>
  );
};

export default Chart2;
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Try using a setTimeout function. Call the fetchChartData function inside setTimeout

        useEffect(() => {
           setTimeout(()=> {
               fetchChartData();
            }, 2000)
         }, []);
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda