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

164
Visualizações
El contenido de la matriz no se puede recuperar (React JS)

Obtengo el contenido de una matriz y puedo ver el contenido de la matriz en console.log.

Sin embargo, la longitud es 0 y el contenido no se puede recuperar con un mapa. ¿Por qué es esto?

ingrese la descripción de la imagen aquí

 const contents = [] as any[] useEffect(() => { for(const key of Object.keys(fruits)) { contents[key as any] = { ...fruits[key as any], ...vegetables[key as any], } } }, [fruits, vegetables, contents]) console.log('contents', contents) console.log('contents length', contents.length)
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede intentar tener contents en el estado en lugar de exponerlo como una variable.

los contents se actualizarán en consecuencia y correctamente cada vez que se actualicen las fruits o vegetables .

 const [contents, setContents] = useState([]) useEffect(() => { const updatedContents = [...contents] for(const key of Object.keys(fruits)) { updatedContents[key as any] = { ...fruits[key as any], ...vegetables[key as any], } } setState(updatedContents) }, [fruits, vegetables]) console.log('contents', contents) console.log('contents length', contents.length)
about 4 years ago · Juan Pablo Isaza Relatório

0

useEffect ejecuta después de cada procesamiento.

Así que el orden de las operaciones en tu ejemplo es:

  1. useEffect programado para ejecutarse después de renderizar
  2. El resto del código se ejecuta (incluidos sus console.logs, por lo que ve 0 en console.log)
  3. useEffect se ejecuta, actualizando los contenidos con los datos.

En las herramientas de desarrollo de Chrome, las matrices/objetos de javascript se muestran por su referencia, evaluados de forma perezosa . Lo que esto significa es que si se agrega algo a la matriz/objeto más tarde, y si lo expande más tarde que cuando se imprimió, verá los nuevos datos.

Eso responde al por qué.

Como solución, esto es lo que puede hacer en su lugar:

 const [contents, setContents] = useState([]); useEffect(() => { const newContents = []; for(const key of Object.keys(fruits)) { newContents.push({ ...fruits[key as any], ...vegetables[key as any], }); setContents(newContents); } }, [fruits, vegetables, contents]) console.log('contents length', contents.length);

Verá el registro de la consola correspondiente una vez que se actualice el estado.

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