A veces quieres mostrar algo solo si se cumple una condición: un mensaje cuando el usuario está logueado, un badge si un producto está rebajado, un placeholder si no hay datos. Astro usa los mismos patrones de JavaScript que ya conoces.
&& (mostrar o nada)Cuando solo quieres pintar algo si la condición es verdadera:
Si hayMensajes es false, no se renderiza nada.
⚠️ Cuidado con valores que no sean estrictamente booleanos. Por ejemplo, {cantidad && ...} con cantidad === 0 imprimiría 0 en pantalla. Para evitarlo, fuerza un boolean: {cantidad > 0 && ...}.
Cuando quieres elegir entre dos resultados:
Es la opción más legible cuando hay exactamente dos ramas.
Cuando hay varias ramas, calcula el resultado en el frontmatter:
O mejor: encapsula la lógica en un componente y delega.
!Para "si NO se cumple", usa !:
Estas dos reglas te ahorrarán bugs:
"" y 0 y NaN son falsy → no se renderizan con &&.null y undefined no se imprimen literalmente, pero pueden ocultar errores.Si quieres asegurar "muestra esto si hay valor":
Abre src/pages/index.astro. Necesitas:
const isLoggedIn = true (luego prueba a poner false para ver el otro caso).const usuario = "Ada" (o tu nombre).isLoggedIn es verdadero → <p>Hola, {usuario}</p>.<p>Inicia sesión</p>.Puedes usar un ternario {isLoggedIn ? ... : ...} o dos && separados. Lo importante es que cambies el valor de isLoggedIn y veas cómo cambia el resultado al recargar.