Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

148
Views
Error al hacer clic en un elemento: los objetos no son válidos como un niño React

Uso un mapa con marcadores personalizados en el sitio. A la derecha hay una lista de casas que coinciden con los marcadores. Necesito implementar lo siguiente: al hacer clic en un marcador, la casa que corresponde al marcador pasa al 1er lugar en la lista. Las coordenadas del marcador y la información de la casa provienen de Firebase. Ahora he implementado el código para esta lógica, pero cuando hago clic en el marcador, aparece un error: los objetos no son válidos como elementos secundarios de React. ¿Cómo se puede solucionar?

 const List = ({ selectedHouse }) => { const [houseTitles, setHouseTitle] = useState([]); useEffect(() => { const q = query(collection(db, "map-markers")); onSnapshot(q, (querySnapshot) => { setHouseTitle( querySnapshot.docs.map((doc) => ({ id: doc.id, data: doc.data(), })) ); }); }, []); return ( <div style={{ width: "50%" }}> {<ListItem title={houseTitles[selectedHouse]} />} {houseTitles .filter((title, index) => index !== selectedHouse) .map((title, index) => ( <ListItem key={index} title={title.data.title} /> ))} </div> ); };

console.log(houseTitles[selectedHouse]): ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Prueba esto:

 const List = ({ selectedHouse }) => { const [houseTitles, setHouseTitle] = useState([]); useEffect(() => { const q = query(collection(db, "map-markers")); onSnapshot(q, (querySnapshot) => { setHouseTitle( querySnapshot.docs.map((doc) => ({ id: doc.id, data: doc.data(), })) ); }); }, []); return ( <div style={{ width: "50%" }}> <ListItem title={houseTitles[selectedHouse]?.data?.title} /> {houseTitles ?.filter((title, index) => index !== selectedHouse) ?.map((title, index) => ( <ListItem key={index} title={title?.data?.title} /> ))} </div> ); };
about 4 years ago · Juan Pablo Isaza Report

0

No necesita corchetes cuando usa componentes como ese;

 ... ... return ( <div style={{ width: "50%" }}> {houseTitles[selectedHouse] && houseTitles[selectedHouse].data ? <ListItem title={houseTitles[selectedHouse].data.title} />:null } {houseTitles .filter((title, index) => index !== selectedHouse) .map((title, index) => ( <ListItem key={index} title={title.data.title} /> ))} </div> ); ... ...

Además, probablemente intente imprimir el título en el componente ListItem pero pase el objeto completo para la Casa seleccionada

Información adicional; La casa seleccionada está vacía en el primer render

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!