Astroの中でReactのヘッドレスUIを読み込んで使う方法のメモ。
目次
Astroのプロジェクトを作る
仮に以下でサンプルファイルありのAstroプロジェクトを生成します。
npm create astro@latestプロジェクトにReactとReact Ariaを追加する
AstroプロジェクトにReactとReact Aria Componentsを読み込みます
Reactを追加する
npx astro add reactReact Aria Components を追加する
npm add react-aria-componentsコンポーネントを作る・使う
react-aria-componentsを読み込んだJSXファイルを作成し、それを各ページの.astroで読み込みます。
JSXでコンポーネントを作る
.astroではなく、.jsxでコンポーネントを作成します。
import { Button } from 'react-aria-components';
export default function ButtonComponent(){
    return(
        <Button onPress={() => alert('Hello world!')}>Press me</Button>
    )
}.astro で client:load で読み込む
そのまま読み込むとただのHTMLタグの出力になってしまうので、 client:load つきで使うことでコンポーネントが持つJavaScriptが実行できます。
---
import Layout from '../layouts/Layout.astro';
import Button from '../components/Button.jsx';
---
<Layout title="Welcome to Astro.">
    <Button client:load/>
</Layout>参考:Template Directives Reference (Astro)
表示確認
ボタンが表示され、ボタンクリックで「Hello world!」が表示されたら成功です。

コメント