Astro Flow lets you use components to control flow in Astro.
The <For>
component loops over iterable objects like Array, Map, Set, and so on.
---
import { For } from '@astropub/flow'
---
<For of={items}>{item => <h2>{item.title}</h2>}</For>
The iterate()
function provides the same functionality as a utility.
---
import { iterate } from '@astropub/flow'
---
{iterate(items, item => <h2>{item.title}</h2>)}
The <When>
component renders if the given conditions are truthy.
---
import { When } from '@astropub/flow'
---
<When test1={checkForTruthiness} test2={alsoCheckForTruthiness}>
<p>Everything was Truthy!</p>
<Fragment slot="else">
<p>Not everything was truthy...</p>
</Fragment>
</When>
The <Switch>
component evaluates an expression and renders the <Case>
component that matches the expression's value.
---
import { Switch, Case } from '@astropub/flow'
---
<Switch of={null}>
<Case of={true}>
<h1>Positive</h1>
<h2>Truly Positive</h2>
</Case>
<Case of={false}>
<h1>Negative</h1>
<h2>Really Negative</h2>
</Case>
<Case default>
<h1>Default</h1>
<h2>Definitely Default</h2>
</Case>
</Switch>
Add Astro Flow to your project.
npm install @astropub/flow
Use Astro Flow in your project.
---
import { Case, For, Switch } from '@astropub/flow'
---
<For of={items}>{
(item) => <h2>{item.title}</h2>
}</For>
<When test={true}>
<p>Things are true.</p>
</When>
<Switch of={null}>
<Case of={true}>
<h1>Positive</h1>
<h2>Truly Positive</h2>
</Case>
<Case of={false}>
<h1>Negative</h1>
<h2>Really Negative</h2>
</Case>
<Case default>
<h1>Default</h1>
<h2>Definitely Default</h2>
</Case>
</Switch>
Enjoy!
Inside of this Astro project, you'll see the following folders and files:
/
├── demo/
│ ├── public/
│ └── src/
│ └── pages/
├── index.astro
│ └── ...etc
└── packages/
└── flow/
├── package.json
└── ...etc
This project uses workspaces to develop a single package, @astropub/flow
.
It also includes a minimal Astro project, demo
, for developing and demonstrating the component.
All commands are run from the root of the project, from a terminal:
Command | Action |
---|---|
npm install |
Installs dependencies |
npm run start |
Starts local dev server at localhost:3000 |
npm run build |
Build your production site to ./dist/ |
npm run serve |
Preview your build locally, before deploying |
Want to learn more? Read the Astro documentation or jump into the Astro Discord.