Next.js App Router のリリースに伴い、多くの開発者が既存のプロジェクトの移行を熱望しています。この投稿では、主な課題、変更点、プロセスをよりスムーズにする方法など、プロジェクトを Next.js App Router に移行した私の経験を共有します。
これは段階的なアプローチであり、ページ ルーターとアプリ ルーターを同時に使用できます。
App Router にはいくつかの利点があります:
移行することで、アプリケーションを将来にわたって保証し、最新の Next.js 機能を活用できます。
最初のステップは、Next.js と関連する依存関係が最新であることを確認することです。次のコマンドを実行して、Next.js と React の最新バージョンをインストールします。
npm install next@latest react@latest react-dom@latest npm install -D eslint-config-next@latest
App Router は、ルート、メタデータ、レイアウトを管理するために新しいアプリ ディレクトリに依存します。構造化する方法は次のとおりです:
アプリ フォルダー: ページをアプリ フォルダーに移動します。各ルートには、page.tsx ファイルを含む独自の専用フォルダーが存在します。
レイアウト: アプリの特定のセクションのレイアウトを定義するには、layout.tsx ファイルを追加します。これは、ナビゲーション バーやフッターなどの共有コンポーネントを処理する場合に特に便利です。
最も重要な変更の 1 つは、ルーティングおよびナビゲーション機能の next/router が next/navigation に置き換えられたことです。
すべての next/router import を next/navigation に置き換えます。
useRouter などの関数を、必要に応じて usePathname、useSearchParams、useRouter() などの新しい同等の関数で更新します。
getServerSideProps と getStaticProps は App Router では非推奨になりました。
サーバー側ページでのデータ取得には、非同期サーバー コンポーネントまたはサーバー アクションを使用します。
export async function getData() { const res = await fetch('https://getData.com/data'); return res.json(); }
クライアントコンポーネント:
React フック、ブラウザ API、またはユーザー インタラクションを使用するコンポーネントはすべて、「クライアントを使用」とマークする必要があります。これにより、Next.js にクライアント側でレンダリングするよう指示されます。
サーバーコンポーネント:
ブラウザとの対話を必要としないコンポーネントは、サーバー コンポーネントとして残すことができます。これらは、不要な JavaScript をクライアントに送信することを避けるため、より効率的です。
React Query、AntDesign、フレーマーなどの外部ライブラリを使用している場合は、それらを更新し、必要に応じて変更を加える必要があります。すべての変更をこのブログに記載することはできません。ただし、変更点はドキュメントに記載されています。
next/router から next/navigation への変更に伴い、ルーター イベントの処理には異なるアプローチが必要になる可能性があります。
ルーターのイベント リスナーまたはフックを適宜更新してください。
複雑なレイアウト (特にアニメーションのあるページ) を含むページを移行すると、レイアウトの変化に気づくことがあります。プレースホルダーを追加するか、サーバー側自体で適切な配置を維持して、レイアウトのずれを防ぎます。
App Router により、画像コンポーネントとリンク コンポーネントに変更が加えられます。
codemod を使用してコンポーネントを自動的に更新します。
画像コンポーネントの場合、応答性などの非推奨の属性を削除します。
フレーマー、スワイパー、Lootie ファイルなどのアニメーション関連のコンポーネントはクライアント側に保持する必要があります。
Next.js App Router への移行には課題もありますが、パフォーマンス、スケーラビリティ、柔軟性が大幅に向上します。移行を管理可能なセクション (アプリレベル、ページレベル、機能更新) に分割することで、各変更に体系的に取り組むことができました。
ご自身の移行に関するご質問やヒントがございましたら、お知らせください。
以上が実践的なガイド - Next.js App Router への移行の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。