カテゴリ: React 更新日: 2026/03/08

Reactのカードコンポーネントを汎用的に設計する方法!初心者でもわかる再利用の考え方

カードコンポーネントを汎用的に設計する方法
カードコンポーネントを汎用的に設計する方法

先生と生徒の会話形式で理解しよう

生徒

「Reactでカードみたいな見た目を毎回同じように作るのが大変です……」

先生

「それなら、カードをコンポーネントとしてまとめると楽になります。」

生徒

「一つ作ったら、いろんな画面で使い回せるんですか?」

先生

「そうです。Reactでは再利用しやすい形で設計するのがとても大切です。」

1. カードコンポーネントとは何か

1. カードコンポーネントとは何か
1. カードコンポーネントとは何か

カードコンポーネントとは、情報をひとまとめにして表示するための箱のような部品です。 例えるなら、名刺や商品紹介カードのような存在で、タイトルや説明文、ボタンなどを一つの枠にまとめます。 Reactでは、このような見た目と役割を持つ部品をコンポーネントとして作ることで、同じ形を何度も使えるようになります。

初心者のうちは画面ごとにHTMLを書きがちですが、それだと修正が大変になります。 カードを一つのコンポーネントにしておくと、デザイン変更も一か所直すだけで済みます。

2. 最もシンプルなカードコンポーネントを作る

2. 最もシンプルなカードコンポーネントを作る
2. 最もシンプルなカードコンポーネントを作る

まずは、とても基本的なカードコンポーネントを作ってみましょう。 この段階では、固定された文字を表示するだけで構いません。 「部品として切り出す」感覚をつかむことが目的です。


import React from "react";

function Card() {
  return (
    <div className="card p-3">
      <h3>タイトル</h3>
      <p>ここに説明文が入ります。</p>
    </div>
  );
}

export default Card;
(画面にタイトルと説明文が入ったシンプルなカードが表示されます)

3. propsを使って汎用的なカードにする

3. propsを使って汎用的なカードにする
3. propsを使って汎用的なカードにする

次に、カードの中身を自由に変えられるようにします。 Reactでは、コンポーネントに値を渡す仕組みをpropsと呼びます。 propsは「部品に渡す材料」のようなもので、同じ型のカードでも内容だけ変えられます。


import React from "react";

function Card(props) {
  return (
    <div className="card p-3">
      <h3>{props.title}</h3>
      <p>{props.text}</p>
    </div>
  );
}

export default Card;

このようにすると、タイトルや文章を外から指定できます。 これが「汎用的な設計」の第一歩です。

4. 親コンポーネントからカードを使う

4. 親コンポーネントからカードを使う
4. 親コンポーネントからカードを使う

作ったカードコンポーネントは、別のコンポーネントから呼び出して使います。 これを親コンポーネントと呼びます。 親からpropsを渡すことで、同じカードでも内容の違う表示ができます。


import React from "react";
import Card from "./Card";

function App() {
  return (
    <div>
      <Card title="商品A" text="これは商品Aの説明です。" />
      <Card title="商品B" text="こちらは商品Bの説明です。" />
    </div>
  );
}

export default App;
(内容の違うカードが縦に並んで表示されます)

5. 子要素を自由に入れられる設計にする

5. 子要素を自由に入れられる設計にする
5. 子要素を自由に入れられる設計にする

さらに柔軟なカードにするために、childrenという仕組みを使います。 childrenは、コンポーネントの中に挟んだ要素を、そのまま表示できる仕組みです。 箱の中に自由な物を入れられるイメージです。


import React from "react";

function Card({ title, children }) {
  return (
    <div className="card p-3">
      <h3>{title}</h3>
      <div>{children}</div>
    </div>
  );
}

export default Card;

この形にすると、文章だけでなくボタンや画像もカードの中に入れられます。

6. childrenを使ったカードの使用例

6. childrenを使ったカードの使用例
6. childrenを使ったカードの使用例

childrenを使うと、カードの使い道が一気に広がります。 初心者のうちは少し難しく感じるかもしれませんが、 「囲んだ中身がそのまま表示される」と考えると理解しやすくなります。


import React from "react";
import Card from "./Card";

function App() {
  return (
    <Card title="お知らせ">
      <p>本日はシステムメンテナンスがあります。</p>
      <button>詳細を見る</button>
    </Card>
  );
}

export default App;
(カードの中に文章とボタンが表示されます)

7. 汎用的なカード設計で意識するポイント

7. 汎用的なカード設計で意識するポイント
7. 汎用的なカード設計で意識するポイント

カードコンポーネントを汎用的に設計する際は、 「中身を決めすぎない」ことが大切です。 最初から用途を限定してしまうと、後で使い回しがしづらくなります。

見た目の枠組みだけをカードに任せて、 表示する内容は外から渡すようにすると、長く使える部品になります。 これはReactのコンポーネント分割と再利用の基本的な考え方です。

カテゴリの一覧へ
新着記事
New1
React
Reactのカードコンポーネントを汎用的に設計する方法!初心者でもわかる再利用の考え方
New2
React
ReactでPropsを使って複数コンポーネントに同じデータを渡す方法を完全ガイド!初心者でもわかるPropsとStateの基本
New3
React
React開発におすすめのVSCode拡張機能まとめ!初心者でもすぐ使える便利ツール紹介
New4
Next.js
Next.js Server ComponentsでDB接続を行うべき理由をやさしく解説!初心者でもわかるNext.jsの基本
人気記事
No.1
Java&Spring記事人気No1
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.2
Java&Spring記事人気No2
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.3
Java&Spring記事人気No3
React
ViteでReact開発環境を構築する手順を完全ガイド!初心者でもできるReactの環境構築
No.4
Java&Spring記事人気No4
React
ReactのProps設計を完全マスター!再利用性を高めるコンポーネント設計の考え方
No.5
Java&Spring記事人気No5
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.6
Java&Spring記事人気No6
React
ReactとTypeScriptの相性とは?型安全な開発のメリット
No.7
Java&Spring記事人気No7
Next.js
Next.jsのPages Routerフォルダ構成を完全ガイド!初心者でもわかるNext.jsのpagesディレクトリ
No.8
Java&Spring記事人気No8
React
Reactの条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐