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

117
Visualizações
No se puede actualizar React.useState("") después de unir todos los elementos de la matriz en una sola cadena

Estoy tratando de actualizar React.useState("") usando setDisplay en una función que toma una serie de cadenas y las une en una sola cadena antes de setDisplay.

Sin setDisplay, puedo usar console.log() y obtener la matriz unida.

 const App = () => { const [display, setDisplay] = React.useState(""); const values = []; const onClick = (value) => { values.push(value); console.log(values) // w/o setDisplay output: ["1","2","3","4"]; w/ setDisplay output: ["1"]; ["2"]; ["3"]; ["4"]; setDisplay(values.join("")) }; return ( <div className="p-5"> {display} <NumPads data={keypress} onClick={onClick} /> <OperatorPads data={keypress} onClick={onClick} /> </div> ); };
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

setDisplay((values) => ([...values, value].join("")]))
about 4 years ago · Juan Pablo Isaza Relatório

0

  const onClick = (value) => setDisplay((dispay) => display.concat('', value));
about 4 years ago · Juan Pablo Isaza Relatório

0

La razón por la que console.log parece funcionar cuando no llama a setDisplay es simplemente porque el estado del componente no cambió.

Cuando llama a setDisplay , cambia el estado, por lo que todo el componente se vuelve a representar, lo que hace que los values se restablezcan a una matriz vacía.

Soluciones

  • Una forma de resolver esto ya se muestra en una respuesta anterior .

  • Otra forma es envolver su matriz de values con useRef :

     const values = useRef([]);

    Luego acceda a la matriz usando values.current

  • Otra forma más es eliminar el uso de values todos juntos y cambiar la devolución de llamada a:

     const onClick = (value) => { setDisplay(display + value); };
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