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

133
Visualizações
Reaccionar, obteniendo TypeError no detectado: no se pueden leer las propiedades de undefined (leyendo 'mapa') en algunas actualizaciones

Tengo un servidor simple que escucha en el puerto 8000 y todo lo que hace es devolver el nombre de los archivos dentro de un directorio en este formato:

 {'Files': ['file1', 'file2', ...]}

Tengo una aplicación React, que obtiene los datos usando el gancho useEffect y luego coloca la respuesta con el gancho useState .

El problema es que, en el primer intento, funciona perfectamente, y quizás en la segunda también, pero cuando actualizo por tercera vez (o más) ¡simplemente desaparece! y veo un mensaje de error en las herramientas de desarrollo de Chrome:

TypeError no capturado: no se pueden leer las propiedades de undefined (leyendo 'mapa')

El código de reacción es:

 import './App.css'; import {useEffect, useState} from "react"; function App() { const [file, setFile] = useState(); useEffect(() => { async function fetchData() { const files = await fetch('http://localhost:8000/get_directory?dir=E:\\Learning\\LearningNetworking\\MD') const file_json = await files.json() setFile(file_json.File) } fetchData() }, []) return ( <div className="App"> <header className="App-header"> {file.map(file_name => <p>{file_name}<br/></p>)} </header> </div> ); } export default App;

Realmente no sé qué está pasando, ¿tal vez hay una condición de carrera y la aplicación de reacción intenta mostrar la lista antes de buscarla? ¿Pero el gancho React useEffect no sabe cuándo buscar de nuevo y cuándo no?

Intenté usar la fusión nula en esta línea:

 const file_json = await files.json() ?? []

en vez de:

 const file_json = await files.json()

El servidor (si es necesario por motivos de depuración) escrito en fastapi:

 from pathlib import Path from fastapi import FastAPI, Request from starlette.middleware.cors import CORSMiddleware app = FastAPI() app.add_middleware(CORSMiddleware, allow_origins=['*']) @app.get('/get_directory') def directory_tree(request: Request): path = request.query_params.get('dir', None) return {'Files': [file.name for file in Path(path).iterdir()]}

Estoy bastante seguro de que tengo algo mal aquí en mi comprensión de React, soy un novato, ¡así que agradecería su ayuda! Cualquier búsqueda en línea no encontró exactamente este problema (tal vez es porque no pude expresar el problema muy bien... ¡perdón si se ha preguntado antes!).

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

0

El problema proviene de su código de cliente. Como definió su estado, inicialmente file no está undefined . Y dado que la obtención de datos es asíncrona, a veces el procesamiento ocurre antes de obtener los datos. Una forma de resolver este problema es iniciar su estado de esta manera:

 const [file, setFile] = useState([]);
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