Ir al contenido
angel.library

El objeto Astro

Dentro del frontmatter de cualquier .astro, Astro es un objeto global con todo el contexto de esa página/componente en ese render — sin importar nada.

Lo que le pasaron a este componente desde afuera. Tipalo con una interfaz Props.

---
interface Props {
titulo: string
destacado?: boolean
}
const { titulo, destacado = false } = Astro.props
---
<h2 class:list={["titulo", { destacado }]}>{titulo}</h2>

En una ruta [id].astro, el valor de [id] para el render actual.

pages/blog/[slug].astro
---
const { slug } = Astro.params
---

Astro.url es un URL normalizado de la request actual — útil para construir canonical URLs, leer query params fuera directamente ruta con getStaticPaths. Astro.request es el Request estándar completo (headers, method).

---
const canonicalURL = new URL(Astro.url.pathname, Astro.site)
const metodo = Astro.request.method
---
<link
rel="canonical"
href={canonicalURL}
/>

Solo funciona en rutas on-demand (no prerenderizadas) — hay que hacer return del resultado para que surta efecto.

---
if (!sesionActiva) {
return Astro.redirect("/login")
}
---

También requiere renderizado on-demand. get, set, has, delete.

---
const tema = Astro.cookies.get("tema")?.value ?? "oscuro"
Astro.cookies.set("visitas", "1", { maxAge: 60 * 60 * 24 })
---

Lee lo que un middleware haya guardado en context.locals para esa request — así una página no repite la misma lógica que ya corrió antes.

---
const usuario = Astro.locals.usuario
if (!usuario) return Astro.redirect("/login")
---
<p>Hola, {usuario.nombre}</p>
PropiedadQué da
Astro.propsProps pasadas al componente
Astro.paramsSegmentos dinámicos de la URL ([slug])
Astro.urlURL normalizada de la request actual
Astro.requestRequest estándar completo
Astro.redirect(ruta)Redirigir (solo en rutas on-demand)
Astro.cookiesLeer/escribir cookies (solo en rutas on-demand)
Astro.localsDatos dejados por el middleware para esta request
  • Astro.redirect() y Astro.cookies.set() no funcionan en páginas prerenderizadas (estáticas) — necesitan export const prerender = false en ese archivo, o el proyecto entero con output: 'server'.
  • Astro.params solo tiene valor en rutas dinámicas ([algo].astro) — en una ruta fija, es un objeto vacío.
  • Astro.locals está tipado como any por defecto — para autocompletado, se extiende la interfaz App.Locals en src/env.d.ts, igual que en Next con App.Locals en env.d.ts.