AstroとReact Islandsのセットアップ
React integrationを使ってAstroを設定し、client:load、client:idle、client:visibleディレクティブを使用します。
「AstroとReact Islandsのセットアップ」はCoddyKit上の無料React Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはReact Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 React Academyコースには全4レッスンが含まれています。
Astro プロジェクトの作成
Astro プロジェクトの初期セットアップには npx create astro@latest を使用します。このコマンドを実行すると、テンプレート、TypeScript の設定、パッケージマネージャーを選択する対話型ウィザードが起動します。Astro では、空のテンプレート、ブログテンプレート、ドキュメントテンプレートなど、複数のスターターを利用できます。
React インテグレーションの追加
Astro のインテグレーションを使うと、プロジェクトにフレームワークのサポートを追加できます。npx astro add react を実行すると、@astrojs/react、react、react-dom が自動的にインストールされ、React インテグレーションを含めるように astro.config.mjs も更新されます。セットアップ全体が1つのコマンドで完了します。
Astro ファイルはデフォルトで静的
.astro ファイルは Astro のコンポーネント形式です。フロントマターセクション(--- で囲まれた JavaScript)とテンプレートセクションで構成されます。デフォルトでは、Astro ファイルは静的 HTML を出力します。クライアントディレクティブを明示的に追加しない限り、ブラウザに JavaScript は送信されません。
React コンポーネントのインポート
Astro ファイルに React コンポーネントをインポートするには、標準の ES モジュール構文を使用します:import Counter from './Counter.jsx'。クライアントディレクティブがない場合、Astro は React コンポーネントを静的 HTML としてサーバーレンダリングし、その HTML をブラウザに送信します。このコンポーネント用の JavaScript は一切配信されません。
ディレクティブによるアイランドの有効化
Astro テンプレートのコンポーネントタグに client:visible を追加すると、そのコンポーネントがアイランドになります:<Counter client:visible />。これで Astro は Counter の JavaScript を配信し、コンポーネントが表示領域に入ったときにハイドレーションして、インタラクティブにします。ディレクティブがなければ、静的 HTML のままです。
React コンポーネントは標準の React
Astro のアイランドとして使用する React コンポーネントは、標準の React で記述します。フック、state、エフェクト、任意の React ライブラリを使用できます。React コンポーネント自体には Astro 固有の API はありません。アイランドの境界はコンポーネントのコード内ではなく、Astro テンプレートで定義します。
状態はアイランドごとに分離される
各アイランドのインスタンスは独立した React ツリーです。同じページにある2つの Counter アイランドが状態を共有することはありません。状態を共有する必要がある場合は、1つのアイランドにまとめる、シリアライズ可能な状態に URL の検索パラメーターを使う、nanostores のような共有状態ライブラリを使う、という3つの方法があります。
Nanostores によるアイランド間通信
@nanostores/react ライブラリは、どのアイランドからでも購読できる軽量な atom を提供します。あるアイランドが nano store の atom に書き込み、別のアイランドがそれを読み取ります。nano stores はフレームワークに依存しないため、このパターンは同じページ上の React アイランドと Vue アイランドの間でも機能します。
Astro のコンテンツコレクション
Astro のコンテンツコレクションは、Markdown ファイルと MDX ファイルを型安全に管理する方法を提供します。Zod でコレクションのスキーマを定義し、Markdown ファイルを src/content/ に配置すると、Astro が完全に型付けされたクエリ関数を生成します。これはブログ記事、ドキュメント、プロダクトページで標準的に使われるパターンです。
プロジェクトのビルド
astro build を実行すると、静的 HTML ファイルが入った dist/ フォルダーが生成されます。Astro は各ページについて、サーバーレンダリングされたコンテンツを含む HTML ファイルと、そのページのアイランドに必要な JavaScript バンドルだけを出力します。アイランドのないページからは JavaScript が一切出力されません。
デプロイの選択肢
静的な出力は、サーバーなしで任意の CDN(Netlify、Vercel、Cloudflare Pages)にデプロイできます。サーバーサイドレンダリングが必要な場合(動的ルートや API エンドポイントなど)、Astro は Node.js、Vercel Edge、Cloudflare Workers、Deno 用の SSR アダプターをサポートしています。どちらのモードでもアイランドは同じように機能します。
React インテグレーションのディレクティブ
インポートした React コンポーネントをクライアント側でインタラクティブにするには、Astro テンプレートでどのような最小限の変更が必要ですか?
レッスンのまとめ
npx astro add react を使って Astro に React をセットアップします。Astro ファイルはデフォルトで静的ですが、React コンポーネントのタグに client: ディレクティブを追加すると、ハイドレーションされるアイランドになります。React コンポーネントは標準の React であり、Astro 固有の API はありません。状態はアイランドごとに分離され、nanostores によってアイランド間の通信が可能になります。ビルドでは静的 HTML と、そのページのアイランドに必要な JavaScript だけが出力されます。
よくある質問
「AstroとReact Islandsのセットアップ」レッスンは無料ですか?
はい。「AstroとReact Islandsのセットアップ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、React Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 React Academyコースには全4レッスンが含まれています。
「AstroとReact Islandsのセットアップ」で何を学びますか?
React integrationを使ってAstroを設定し、client:load、client:idle、client:visibleディレクティブを使用します。 ブラウザで直接実行するハンズオンコードでReact Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
React Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのReact Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「AstroとReact Islandsのセットアップ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このReact Academyレッスンでコードを書いて実行できますか?
はい。すべてのReact Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 完全ハイドレーションの問題
- Islandsアーキテクチャ:選択的ハイドレーション
- AstroとReact Islandsのセットアップ
- パフォーマンスを測定する:Lighthouse と Core Web Vitals