第5回:Props(プロップス)の使い方:コンポーネント間でデータを受け渡す方法

lang

前回:Reactコンポーネントの基本:UIを部品化して再利用する設計のコツでは、画面を「部品(コンポーネント)」に分けて作る方法を学びました。

しかし、前回のボタンはどれを押しても同じ「こんにちは!」しか言えませんでしたよね。実際の開発では、**「見た目は同じだけど、表示する名前や色だけ変えたい」**という場面がほとんどです。

そこで登場するのが Props(プロップス) です。これを使えば、コンポーネントに「外からデータ」を渡して、個性を出すことができます。


1. Props(プロップス)とは何か?

Propsは「Properties(プロパティ)」の略で、日本語では「属性」や「設定値」を意味します。

イメージとしては、「関数の引数」のReact版です。

  1. 親(呼び出す側)がデータを渡す。
  2. 子(部品側)がそのデータを受け取って表示する。

このように、親から子へとデータが流れるのがReactの基本原則です。


2. Propsの書き方:渡す側と受け取る側

書き方は非常にシンプルです。

渡す側(親:App)

HTMLの属性のように 名前="値" と書きます。

JavaScript

<HelloButton name="太郎" />

受け取る側(子:HelloButton)

関数の引数として「オブジェクト」の形で受け取ります。

JavaScript

function HelloButton(props) {
  return <button>{props.name}さん、こんにちは!</button>;
}

3. 【実践】個別の名前を表示するボタンを作ろう

それでは、第2回で作成した環境App.jsx を書き換えて、Propsの動きを体験しましょう。

App.jsx(最小構成版)

JavaScript

import React from 'react';

// 1. 子コンポーネント:データを受け取る側
// 引数の props に、親から渡されたデータがまとまって入ってきます
function WelcomeMessage(props) {
  return (
    <div>
      {/* JavaScriptのポイント:props.name で値を取り出す */}
      <h2>ようこそ、{props.name}さん!</h2>
    </div>
  );
}

// 2. 親コンポーネント:データを渡す側
export default function App() {
  return (
    <div>
      <h1>Propsのデモ</h1>
      
      {/* 属性としてデータを渡す */}
      <WelcomeMessage name="田中" />
      <WelcomeMessage name="佐藤" />
      <WelcomeMessage name="鈴木" />

      <p>※同じ部品なのに、渡すデータによって表示が変わっています!</p>
    </div>
  );
}

CodeSandboxでPropsの動きを確認する


4. コードの解説(JavaScript & React)

JavaScriptのポイント:オブジェクトのプロパティ

Propsの実体はただの JavaScriptオブジェクト です。 例えば親が name="田中" と渡すと、子の引数には { name: "田中" } というデータが届きます。だから props.name で中身にアクセスできるのです。

Reactのポイント:分割代入(応用)

現場では props.name と何度も書くのは面倒なので、以下のように 「分割代入」 というJavaScriptの機能を使って書くのが2026年現在の主流です。

JavaScript

// propsの中身をいきなり { name } として取り出す
function WelcomeMessage({ name }) {
  return <h2>ようこそ、{name}さん!</h2>;
}

これだけでコードがさらにスッキリしますね。


5. Propsの鉄則:一方通行のルール

Propsには絶対に守らなければならないルールがあります。それは、「子は受け取ったPropsを自分で書き換えてはいけない」 ということです。

  • OK: 親から届いた名前を表示する。
  • NG: 子コンポーネントの中で props.name = "別人" と書き換える。

データを変えたいときは、必ず「親」側で管理する必要があります。この「データの一方向性」が、Reactアプリが複雑になってもバグが起きにくい理由です。


今回のまとめ

  1. Props は、コンポーネントに外から渡す設定値。
  2. 親は 名前="値" で渡し、子は 引数 で受け取る。
  3. Propsを使えば、1つの部品をカスタマイズして再利用できる。
  4. Propsは 「読み取り専用」。子は中身を勝手に変えられない。

次回予告:useStateをマスターしよう

Propsは「外から届く固定のデータ」でした。 では、自分自身で変化するデータ(例えば、入力中の文字や、クリックで増える数字)はどう管理すればいいでしょうか?

第1回で少しだけ登場したあの「魔法の道具」を深掘りします。

次回、「第6回:useStateをマスター!Reactで画面を動的に書き換える『状態』の基本」。 これを知れば、Reactで「動かないものはない」と言えるほど重要な回です。お楽しみに!


本日の宿題:WelcomeMessage に、名前だけでなく color というPropsも追加してみてください。そして、その色を使って文字の色を変えることはできるでしょうか?(ヒント:第3回のJSXのルールを思い出してください!)

コメント

タイトルとURLをコピーしました