Context
Save context between components.
Allow you to add extra props without the need to manually add them every time.
Installation
Install the package by running
npm install @astro-utils/context
pnpm add @astro-utils/context
yarn add @astro-utils/context
Usage
layouts/Layout.astro
---import Context from '@astro-utils/context/Context.astro';
function consoleIt(){ console.log('Hi');}---<Context title="Context is cool" consoleIt={consoleIt}> <slot/></Context>
components/LayoutTitle.astro
---import getContext from '@astro-utils/context';
const {title, consoleIt} = getContext(Astro);consoleIt();---<h2>{title}</h2>
pages/index.astro
---import Layout from '../layouts/Layout.astro';import LayoutTitle from '../components/LayoutTitle.astro';---<Layout> <LayoutTitle/></Layout>
Functions
// if you are module/lib, change the name accordinglyfunction getContext(astro: AstroGlobal, name = "default"): {[key: string]: any}
Every new context inherit the last one
async function asyncContext<T>(promise: () => Promise<T>, astro: AstroGlobal, { name = "default", context = astro.props}): Promise<T>
Same as Context.astro
, help you render astro inside the props context
Example
const htmlSlot = await asyncContext(() => Astro.slots.render('default'), Astro, {name: "default"});