Conao3 Note

AstroでReact Flowを使いたいぞという話


はじめに

React Flowに一目惚れしたので、このブログでも使ってみたい。 Hello Astroで素のReactが動くことは確かめたのだけど、このクラスのライブラリが動くかどうかは分からないので、ちょっとチャレンジングな課題。

pnpm install

まずは、React Flowをインストールする。

Terminal window
pnpm install reactflow

ローカルサーバーを起動してみる。

Terminal window
pnpm run dev

普通に立ち上がってきた。インストールしただけで壊れるということはなかったようです。

mdxで使ってみる

Creating your first flowの例をやってみる。

import ReactFlow from 'reactflow';
import 'reactflow/dist/style.css';
const initialNodes = [
{ id: '1', position: { x: 10, y: 10 }, data: { label: '1' } },
{ id: '2', position: { x: 10, y: 100 }, data: { label: '2' } },
];
const initialEdges = [{ id: 'e1-2', source: '1', target: '2' }];
export default function App() {
return (
<div style={{ border: '1px solid', width: '100%', height: '500px' }}>
<ReactFlow nodes={initialNodes} edges={initialEdges} />
</div>
);
}

これを src/components/SimpleReactflow.tsx で保存して、以下のようにmdxに埋め込む。

import App from '../../../components/SimpleReactflow.tsx'
<App client:only />

。。。普通に動いてしまった。。なんだこれ、Astro最高だな。

とはいえ実は一回失敗していた。 cliend:load を指定するとビルド時にAstroが落ちてしまった。 SSRに対応してないのかな?ということで client:only を指定してgot事無き。

まとめ

予想外にさくっと動いてしまったのでびっくりしてしまいました。

たしかにhugoよりもページ生成速度は少し遅いですが、十分速いですし、出来上がったページはhugoと遜色ないです。(ゼロjsなので)

それでいてこんな感じにReactが普通に動くのは夢が広がります。みなさんも試してみてください。