こんにちは。
Next.js 13の新しいアップデートがリリースされましたね。今回はその中でも特に注目されている「ルートグループ」の新機能に焦点を当て、アプリのルートレイアウトを最適化する方法をご紹介します。
1. ルートグループの基本的な使い方
まずは基本的な使い方から見ていきましょう。
ルートグループを利用することで、関連するページをグループ化し、共通のレイアウトやデータフェッチを行うことができます。
具体例1: 基本的なルートグループの作成
// pages/group.tsx import { routeGroup } from 'next/route-group' export default routeGroup({ prefix: '/dashboard', layout: 'DashboardLayout', redirects: [ { source: '/', destination: '/overview', }, ], })
このコードは、/dashboard
というプレフィックスを持つルートグループを作成しています。DashboardLayout
というレイアウトを使用し、/dashboard
へのアクセスを/dashboard/overview
へリダイレクトします。
2. レイアウトの共有
ルートグループを利用すると、複数のページでレイアウトを共有することが可能になります。
これにより、コードの重複を避け、メンテナンス性を向上させることができます。
具体例2: レイアウトの共有
// layouts/DashboardLayout.tsx import React from 'react' const DashboardLayout: React.FC = ({ children }) => { return ( <div> <nav>...</nav> <main>{children}</main> </div> ) } export default DashboardLayout
上記のコードはDashboardLayout
という共通のレイアウトコンポーネントを作成しています。
このレイアウトは/dashboard
プレフィックスを持つすべてのページで使用されます。
3. データフェッチの最適化
ルートグループを利用することで、データフェッチの最適化も行うことができます。
共通のデータを一度のフェッチで取得し、複数のページで利用することが可能になります。
ここまでがルートグループの基本的な利用方法となります。
4. ルートグループ内でのデータ共有
ルートグループを利用すると、グループ内の各ページでデータを簡単に共有できます。
これにより、データフェッチの効率を向上させることができます。
具体例3: データフェッチの最適化
// pages/dashboard/useDashboardData.ts import { useState, useEffect } from 'react' export const useDashboardData = () => { const [data, setData] = useState(null) useEffect(() => { // ここでデータフェッチを行う fetch('/api/dashboard') .then(response => response.json()) .then(data => setData(data)) }, []) return data }
上記のコードは、useDashboardData
というカスタムフックを作成しています。
このフックを利用することで、ダッシュボードのデータを簡単に取得できます。
5. ルートグループのリダイレクト機能
ルートグループにはリダイレクト機能も備わっており、特定のルートへのアクセスを他のルートにリダイレクトすることができます。
これにより、URLの変更やメンテナンス時のリダイレクトが簡単に行えます。
具体例4: リダイレクトの設定
// pages/group.tsx import { routeGroup } from 'next/route-group' export default routeGroup({ prefix: '/dashboard', layout: 'DashboardLayout', redirects: [ { source: '/old-route', destination: '/new-route', permanent: true, }, ], })
このコードは、/dashboard/old-route
へのアクセスを/dashboard/new-route
へ永続的にリダイレクトする設定を行っています。
6. まとめ
Next.js 13のルートグループ機能は、アプリケーションのルートレイアウトを効率的に管理する強力なツールです。
共通のレイアウトやデータフェッチをグループ内の複数のページで簡単に共有できるため、コードの重複を減らし、メンテナンス性を向上させることができます。
今回の記事でご紹介した内容をぜひ試してみてください。