React 入門:Props と State の違い

React を学び始めると、必ず登場する重要な概念が Props(プロップス)State(ステート) です。どちらもコンポーネントが扱う「データ」に関係していますが、その役割や使い方には明確な違いがあります。今回は、この二つの概念を整理して理解しやすい形で紹介します。


Props とは?

Props(Properties の略) は、親コンポーネントから子コンポーネントに渡す「入力データ」です。
HTML でいうと、タグに設定する属性(例:<img src="..." alt="...">srcalt)に近いイメージです。

特徴

  • 外部から渡される値(親から子へ一方向に流れる)
  • 読み取り専用(コンポーネント内で変更できない)
  • 再利用性を高める(同じコンポーネントに異なる値を渡して使える)

サンプルコード

function Greeting(props) {
  return <h1>こんにちは{props.name}さん</h1>;
}

// 利用例
<Greeting name="太郎" />
<Greeting name="花子" />

結果として「こんにちは、太郎さん!」「こんにちは、花子さん!」が表示されます。
同じコンポーネントでも、props が異なれば出力も変わるわけです。


State とは?

一方で State は、そのコンポーネント自身が持つ「内部データ」です。
ユーザーの操作や時間の経過などで変化する値を保持し、変更されるとコンポーネントが再レンダーされます。

特徴

  • コンポーネント内部で管理されるデータ
  • 変更可能setStateuseState を使って更新)
  • UI の変化を表現するのに使われる

サンプルコード

import { useState } from "react";

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>現在のカウント: {count}</p>
      <button onClick={() => setCount(count + 1)}>1</button>
    </div>
  );
}

ボタンをクリックするたびに count が更新され、その結果が即座に画面に反映されます。


Props と State の違いまとめ

項目PropsState
データの性質外部から渡される(入力値)コンポーネント内部で管理する
変更可否読み取り専用(変更不可)更新可能(setState / useState)
主な役割コンポーネント間のデータ受け渡しUI の状態管理(動的な変化の表現)

Props と State を組み合わせる

実際のアプリ開発では、Props と State は単独で使うよりも、組み合わせて使う場面が多いです。
例えば、親コンポーネントがデータを管理し、その一部を Props として子に渡し、子は State を使って UI を操作するといった流れです。

function App() {
  const [user, setUser] = useState("太郎");

  return <Greeting name={user} />;
}

このように「親が持つ State を Props として子に渡す」という流れは React アプリの基本的なデータの流れです。


まとめ

  • Props は「親から子への入力データ」、読み取り専用。
  • State は「コンポーネント内部で持つ状態」、変更可能で UI を動的に変える。
  • この二つを理解することで、React アプリのデータの流れがぐっとわかりやすくなります。