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

81
Visualizações
UseState no se actualiza en el método de ciclo de vida de componentDidMount

Recientemente estoy practicando mi habilidad de reacción y tratando de construir un componente fácil, y caigo en una situación confusa.

Aquí está el código, me pregunto por qué mi página de reacción no muestra los datos después de que los desactivé (debería mostrar la opción Seleccionar todo), investigo un poco al respecto y sé que el problema es el cierre ( el método useState set no refleja el cambio inmediatamente ), pero sigo siendo confuso si es el caso, cuando se va a useEffect, su cierre son los datos originales y los anulo, luego setState debería actualizar los datos después.

Sé que puedo solucionarlo creando una variable temporal en useEffect y setState con ella, pero todavía me pregunto cómo funciona y qué sucede detrás de escena.

 import React, { useState, useEffect } from "react"; const selections = ["Kosher", "No Celery(inc celeriac)", "No Egg"]; const dataConfig = selections.map((selection) => ({ value: selection, isSelect: false })); const Selector = () => { const [data, setData] = useState(dataConfig); useEffect(() => { data.unshift({ value: "Select All", isSelect: false }); setData(data); }, []); return ( <div className="container"> {console.log(data)} {data.map((ele, idx) => { return ( <div key={Math.random()}> <input type="checkbox" value={ele.value} /> <label>{ele.value}</label> </div> ); })} </div> ); }; export default Selector;
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Array.prototype.unshift() muta la matriz en el lugar. React no detecta que su estado ha cambiado porque la referencia del objeto es la misma.

Consulte Salir de una actualización de estado

Si actualiza un State Hook al mismo valor que el estado actual, React se rescatará sin renderizar a los niños ni disparar efectos. (React usa el algoritmo de comparación Object.is ).

Pruebe esto en su lugar, que crea una nueva matriz, lo que desencadena un cambio de estado

 setData(prev => [{ value: "Select All", isSelected: false, }, ...prev]);
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