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

84
Visualizações
useState react hook with compliquated enumerable properties

I'm struggling to modify a JSON like object with the setState property (from a useState hook). I would like to add items to labels and data arrays, at the same time.

  const dataInit = {
    labels: [
      'January',
      'February',
      'March',
      'April',
      'May',
      'June',
    ],
    datasets: [{
      label: 'My First dataset',
      backgroundColor: 'rgb(255, 99, 132)',
      borderColor: 'rgb(255, 99, 132)',
      data: [0, 10, 5, 2, 2, 30, 49,80],
    }]
  };

Here is the initialization of my useState hook with a try that doesn't work:

const [graphData, setGraphData] = useState(dataInit)

setGraphData(prevState => ({
                       ...prevState,
                       labels: prevState.labels.concat(["hey"]),
                       datasets: prevState.datasets[0].data.concat([3])
                       })
             )

Thanks for helping

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Always return a new object to the nested props that are objects, while setting the state. What concat does is append new value to the existing object. Try something like:

const [graphData, setGraphData] = useState(dataInit)


setGraphData(prevState => 
{
    let _datasets  = [...prevState.datasets];
    _datasets[0].data = [..._datasets[0].data, ...data];
    return {
        ...prevState,
        labels: [...prevState.labels, "hey"], //new array returns with previous and new value
        datasets: _datasets
    }
})
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