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

212
Views
¿Cómo mostrar un mensaje dentro de un div vacío cuando un componente no se representa en él?

Tengo un div dentro del cual estoy renderizando componentes de tarjetas dinámicas (SearchRes):

 <div className="search-res"> {games.filter(game => (game.background_image !== null)&&(game.ratings_count>38)).map(game=> <SearchRes key={game.name} title={game.name} rating={game.metacritic===null?<MdGamepad/>:game.metacritic} genre={game.genres.map(genre=>genre.name+" ")} imglnk={(game.background_image===null)?"":game.background_image} gameid={game.id} slug={game.slug} plat={game.parent_platforms} /> )} </div>

Cuando las tarjetas no se procesan (cuando no pasan las condiciones del filtro), obtengo un espacio en blanco. Quiero mostrar algo como que no results found cuando sucede tal cosa, ¿cómo puedo implementar esto? Actualmente estoy usando CSS para implementarlo:

 .search-res:empty::before { content: "No data";}

pero claramente esto no es viable ya que el mensaje es visible cuando la búsqueda ni siquiera se inicia: mensaje que se muestra cuando la búsqueda ni siquiera se inicia

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

0

Si entiendo su pregunta, desea generar condicionalmente un respaldo "Sin datos" solo después de que haya obtenido los datos y no haya nada que procesar.

  1. Agregue un estado de carga y represente condicionalmente un indicador de carga.

  2. Filtre los games y en el renderizado verifique que haya una longitud de matriz (es decir, algo para mapear) y renderice condicionalmente la matriz o el texto alternativo si hay un término de búsqueda actual.

Código

 const [searchLoaded, setSearchLoaded] = React.useState(false); // in search handler // toggle searchLoaded false when initiating a search // toggle searchLoaded true when search completes const results = games.filter( game => game.background_image !== null && game.ratings_count > 38 ); <div className="search-res"> {results.length ? results.map(game => ( <SearchRes key={game.name} title={game.name} rating={game.metacritic === null ? <MdGamepad/> : game.metacritic} genre={game.genres.map(({ name }) => name).join(" ")} imglnk={game.background_image === null ? "" : game.background_image} gameid={game.id} slug={game.slug} plat={game.parent_platforms} /> )) : searchLoaded && "No Data" } </div>
about 4 years ago · Juan Pablo Isaza Report

0

Sugeriría filtrar la matriz primero, según las condiciones y luego verificar si la matriz tiene una longitud, es decir arr.length !== 0 y, si ese es el caso, luego asignar los resultados de la matriz al card component . Y si no, muestra el mensaje de que no se encontraron datos. Tendría que usar if/else o el ternary operator .

Gracias😊

about 4 years ago · Juan Pablo Isaza Report

0

si está utilizando un filtro solo para acondicionamiento, entonces no hay necesidad de un filtro; en su lugar, puede usar una representación condicional como esta:

 <div className="search-res"> {games.map(game=> {(game.background_image !== null && game.ratings_count>38) ? <SearchRes key={game.name} title={game.name} rating={game.metacritic===null?<MdGamepad/>:game.metacritic} genre={game.genres.map(genre=>genre.name+" ")} imglnk={(game.background_image===null)?"":game.background_image} gameid={game.id} slug={game.slug} plat={game.parent_platforms} /> : "NO RESULTS FOUND"} )} </div>

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!