React Remixを使ったTODOアプリケーションを作成するための次のステップとして、ルーティングとコンポーネント設計について解説します。この記事では、アプリの基本的なページ構成とルート設計を行います。
1. ルーティングの基礎
React Remixのルーティングは、ファイルベースで構成されています。app/routes
ディレクトリ内にファイルを追加することで、URLパスに対応するルートを簡単に作成できます。
基本的なルートの作成
以下の手順でTODOアプリのホームページルートを作成します。
app/routes/index.tsx
を作成します。
export default function Index() {
return (
<main>
<h1>TODOアプリ</h1>
<p>ここからタスク管理を始めましょう。</p>
</main>
);
}
ブラウザでhttp://localhost:3000
を開くと、このページが表示されます。
2. ネストされたルート
TODOアプリでは、タスク一覧ページやタスク詳細ページなど、階層的なルートが必要です。以下の手順でネストされたルートを作成します。
タスク一覧ページ
app/routes/tasks.tsx
を作成します。
export default function Tasks() {
return (
<main>
<h1>タスク一覧</h1>
<ul>
<li>タスク1</li>
<li>タスク2</li>
</ul>
</main>
);
}
動的ルート: タスク詳細ページ
app/routes/tasks/$taskId.tsx
を作成します。
import { useParams } from "@remix-run/react";
export default function TaskDetail() {
const { taskId } = useParams();
return (
<main>
<h1>タスク詳細</h1>
<p>タスクID: {taskId}</p>
</main>
);
}
ブラウザでhttp://localhost:3000/tasks/1
のようにアクセスすると、タスクID: 1
と表示されます。
3. コンポーネント設計
コンポーネントを分割して再利用可能なUIを構築します。ここでは、タスク一覧を表示するためのコンポーネントを作成します。
TaskListコンポーネント
app/components/TaskList.tsx
を作成します。
type Task = {
id: string;
title: string;
};
type TaskListProps = {
tasks: Task[];
};
export default function TaskList({ tasks }: TaskListProps) {
return (
<ul>
{tasks.map((task) => (
<li key={task.id}>{task.title}</li>
))}
</ul>
);
}
使用例
app/routes/tasks.tsx
でこのコンポーネントを使用します。
import TaskList from "../components/TaskList";
const tasks = [
{ id: "1", title: "タスク1" },
{ id: "2", title: "タスク2" },
];
export default function Tasks() {
return (
<main>
<h1>タスク一覧</h1>
<TaskList tasks={tasks} />
</main>
);
}
まとめ
この記事では、React Remixを使ったTODOアプリのルーティングと基本的なコンポーネント設計を学びました。次回の記事では、サーバーサイドレンダリングとデータの管理について解説します。
参考情報
- React Remix公式サイト
- Node.js公式サイト
- npm公式ガイド
- Remix GitHubリポジトリ
- React Remixを使ってTODOアプリを作ってみる(1):セットアップ
- React Remixを使ってTODOアプリを作ってみる(2):ルーティングとコンポーネント設計
- React Remixを使ってTODOアプリを作ってみる(3):データ管理 サーバーサイドレンダリングとLoaderの活用
- React Remixを使ってTODOアプリを作ってみる(4):アクション処理 タスクの追加・削除・編集機能の実装
- React Remixを使ってTODOアプリを作ってみる(5):デプロイとパフォーマンス最適化
コメント