0Pricing
React Academy · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 完全ハイドレーションの問題
  2. Islandsアーキテクチャ:選択的ハイドレーション
  3. AstroとReact Islandsのセットアップ
  4. パフォーマンスを測定する:Lighthouse と Core Web Vitals
← React Academyに戻る