Astroの中でReactのヘッドレスUIを読み込んで使う方法のメモ。
目次
Astroのプロジェクトを作る
仮に以下でサンプルファイルありのAstroプロジェクトを生成します。
npm create astro@latest
プロジェクトにReactとReact Ariaを追加する
AstroプロジェクトにReactとReact Aria Componentsを読み込みます
Reactを追加する
npx astro add react
React 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!」が表示されたら成功です。
コメント