Imagina que quieres que tu layout reciba tres zonas de contenido distintas: la cabecera, el cuerpo y el pie. Con un único <slot /> no hay forma de decir cuál va dónde.
Para eso existen los named slots: huecos con nombre.
Dentro del componente, da un nombre a cada slot:
Has añadido dos slots con nombre (header y footer) y dejado el slot por defecto en el medio.
Desde la página, marca cada elemento con el atributo slot="..." para indicar a qué hueco va:
Astro distribuye cada elemento donde su slot= indique. Lo que no lleva slot= cae en el slot por defecto.
Cada slot puede tener su contenido por defecto:
Si el padre no inyecta nada, se ve el fallback.
Buenos casos:
Si el componente tiene un único bloque libre, un <slot /> por defecto es suficiente.
Astro expone Astro.slots.has("header") en el frontmatter. Útil para esconder zonas vacías:
Tienes:
src/layouts/BaseLayout.astro con <header>, <main> (y un slot dentro) y <footer>.src/pages/index.astro que ya usa el layout.Tu trabajo:
<header>, mete <slot name="header" />. Dentro del <footer>, <slot name="footer" />.slot="header" (un <h1> con el título de la página) y otro con slot="footer" (un <small> con copyright o créditos).Si no marcas nada, el contenido va al slot por defecto. Es la combinación de los dos modos lo que da flexibilidad real al layout.