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

107
Views
Los problemas con la representación condicional reaccionan

Así que he leído bastante sobre la representación condicional de reacción en los documentos oficiales y también en STO, pero tengo algunos problemas y dudas.

 return ( <div className="container is-fluid"> {games.map((game) => ( <div className="gameContainer" key={game.id}> {!!`${game.live_embed_url}` && (<iframe src= {`${game.live_embed_url}&parent=localhost`} frameBorder="2" allowFullscreen="true" scrolling="no" height="378" width="620"> </iframe>)} <h2 className="h2__whiteuk-text-large">{game.name}{game.live_embed_url}</h2> </div> ))} </div> );

Mi objetivo aquí es que estoy tratando de verificar si el valor de {game.embed_url} es NULL, entonces no se debe representar <iframe <iframe> , de lo contrario se debe representar <iframe> ,

Por supuesto, todo esto sería mucho más simple con un if/else, pero como estoy dentro del return, no puedo usarlo y no estoy seguro de cómo proceder con esto.

Lo siento si la pregunta es demasiado básica, pero he pasado demasiado tiempo tratando de resolverlo y sigo rompiendo mi aplicación.

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

0

simplemente extraiga la lógica a una función y use el if:

 const renderIframe = (game) => { if (!game.live_embed_url) { return null; } return ( <iframe src={`${game.live_embed_url}&parent=localhost`} frameBorder="2" allowFullScreen="true" scrolling="no" height="378" width="620" ></iframe> ); }; return ( <div className="container is-fluid"> {games.map((game) => ( <div className="gameContainer" key={game.id}> {renderIframe(game)} <h2 className="h2__whiteuk-text-large"> {game.name} {game.live_embed_url} </h2> </div> ))} </div> );

EDITAR: solo como una nota para el OP y quien lea esto, el patrón que están tratando de hacer se llama cortocircuito y algunas personas pueden considerarlo un patrón anti cuando lo usa en lugar de un si. Ejemplo: https://www.codereadability.com/dont-use-short-circuiting-when-you-want-an-if-statement/

Personalmente, no tengo nada en contra, pero creo que usar ifs mejora la legibilidad.

about 4 years ago · Juan Pablo Isaza Report

0

Creo que necesita usar el operador ternario en este tipo de situación:

 { game.live_embed_url ? (<iframe src= {`${game.live_embed_url}&parent=localhost`} frameBorder="2" allowFullscreen="true" scrolling="no" height="378" width="620"> </iframe>) : null }
about 4 years ago · Juan Pablo Isaza Report

0

No necesitas !! para comprobar el valor. En este momento, lo que sucede es que, si game.embed_url no está definido, !!`${game.live_embed_url}` se evaluará como !!'undefind' , que se evaluará como true debido a la cadena 'undefind'.

En javascript, cualquier cadena no vacía se evalúa como true .

Puedes intentar lo siguiente

 {game.live_embed_url && (<iframe src= {`${game.live_embed_url}&parent=localhost`} frameBorder="2" allowFullscreen="true" scrolling="no" height="378" width="620"> </iframe>)}
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!