カテゴリ: React 更新日: 2026/02/18

Reactのフォームデータを親コンポーネントに渡す方法を完全解説!初心者でもわかるフォーム処理

フォームデータを親コンポーネントに渡す方法
フォームデータを親コンポーネントに渡す方法

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

生徒

「Reactでフォームを作ったのですが、入力した内容を別の画面でも使いたいです」

先生

「それなら、子コンポーネントから親コンポーネントへデータを渡す方法を覚える必要がありますね」

生徒

「フォームは子に書いているのに、どうやって親に渡すんですか?」

先生

「Reactでは、関数を使ってデータを受け渡しします。順番に見ていきましょう」

1. 親コンポーネントと子コンポーネントの関係

1. 親コンポーネントと子コンポーネントの関係
1. 親コンポーネントと子コンポーネントの関係

Reactでは、画面を小さな部品に分けて作ります。 この部品のことをコンポーネントと呼びます。 その中で、他のコンポーネントを呼び出している側を親コンポーネント、 呼び出されている側を子コンポーネントと言います。

例えるなら、親は家全体、子は部屋のような関係です。 親は全体を管理し、子は一部分の役割を担当します。

2. フォームデータを親に渡す基本の考え方

2. フォームデータを親に渡す基本の考え方
2. フォームデータを親に渡す基本の考え方

Reactでは、データは基本的に親から子へ渡します。 しかし、フォーム入力のように「子で入力した内容を親で使いたい」場面も多くあります。

その場合、親で用意した関数を子に渡し、 子がその関数を呼び出すことでデータを親に伝えます。 これは、子が親に電話をかけて報告するようなイメージです。

3. 親コンポーネントで受け取り準備をする

3. 親コンポーネントで受け取り準備をする
3. 親コンポーネントで受け取り準備をする

まずは、親コンポーネントでフォームデータを受け取るための状態を用意します。 そして、その状態を更新する関数を子に渡します。


import React, { useState } from "react";
import ChildForm from "./ChildForm";

function App() {
  const [userName, setUserName] = useState("");

  return (
    <div>
      <h1>親コンポーネント</h1>
      <p>受け取った名前:{userName}</p>
      <ChildForm onSendName={setUserName} />
    </div>
  );
}

export default App;
(子コンポーネントから受け取った名前が画面に表示されます)

4. 子コンポーネントでフォームを作成する

4. 子コンポーネントでフォームを作成する
4. 子コンポーネントでフォームを作成する

次に、子コンポーネント側でフォームを作ります。 入力された値を、親から渡された関数に渡すことで、親へデータを送ります。


import React, { useState } from "react";

function ChildForm(props) {
  const [name, setName] = useState("");

  const handleSubmit = () => {
    props.onSendName(name);
  };

  return (
    <div>
      <h2>子コンポーネント</h2>
      <input
        type="text"
        value={name}
        onChange={(e) => setName(e.target.value)}
      />
      <button onClick={handleSubmit}>送信</button>
    </div>
  );
}

export default ChildForm;
(入力して送信ボタンを押すと、親の表示が更新されます)

5. フォーム送信時にまとめてデータを渡す方法

5. フォーム送信時にまとめてデータを渡す方法
5. フォーム送信時にまとめてデータを渡す方法

実際のフォームでは、名前やメールアドレスなど、複数の項目を扱います。 その場合は、オブジェクトという箱にまとめて渡すと便利です。 オブジェクトとは、複数の情報を一つにまとめた入れ物のことです。


import React, { useState } from "react";

function ChildForm(props) {
  const [name, setName] = useState("");
  const [email, setEmail] = useState("");

  const handleSubmit = () => {
    props.onSubmit({
      name: name,
      email: email
    });
  };

  return (
    <div>
      <input
        type="text"
        placeholder="名前"
        value={name}
        onChange={(e) => setName(e.target.value)}
      />
      <input
        type="email"
        placeholder="メール"
        value={email}
        onChange={(e) => setEmail(e.target.value)}
      />
      <button onClick={handleSubmit}>送信</button>
    </div>
  );
}

export default ChildForm;

6. 親コンポーネントで複数データを受け取る

6. 親コンポーネントで複数データを受け取る
6. 親コンポーネントで複数データを受け取る

子からまとめて送られたデータは、親で一つずつ使うことができます。 これにより、入力内容を一覧表示したり、別の処理に使ったりできます。


import React, { useState } from "react";
import ChildForm from "./ChildForm";

function App() {
  const [formData, setFormData] = useState({});

  return (
    <div>
      <h1>入力結果</h1>
      <p>名前:{formData.name}</p>
      <p>メール:{formData.email}</p>
      <ChildForm onSubmit={setFormData} />
    </div>
  );
}

export default App;
(送信すると、名前とメールが親側に表示されます)

7. フォームデータ受け渡しでよくある注意点

7. フォームデータ受け渡しでよくある注意点
7. フォームデータ受け渡しでよくある注意点

初心者が混乱しやすいのは、「子から親へ直接値を渡せない」という点です。 Reactでは、必ず関数を使って伝える必要があります。 この仕組みを守ることで、画面の動きが分かりやすくなります。

また、propsという言葉は「親から子へ渡された情報」という意味です。 難しく感じたら、「親からもらった道具」と考えると理解しやすくなります。

カテゴリの一覧へ
新着記事
New1
React
Reactのコンポーネント志向とは?再利用性の高いUI設計を学ぶ
New2
Next.js
Next.jsのLayoutをルート単位で切り替える方法を完全解説!初心者でもわかるNext.jsレイアウト入門
New3
React
Propsにデフォルト値を設定する方法(defaultPropsの使い方)
New4
React
ReactのuseEffectで初回のみ処理を実行する方法を徹底解説!初心者でもわかるReactフック入門
人気記事
No.1
Java&Spring記事人気No1
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
React
create-react-appでReactプロジェクトを作成する手順を初心者向けに完全解説!
No.3
Java&Spring記事人気No3
React
ReactのuseEffect依存配列を徹底解説!初心者でも理解できるDependency Arrayの仕組み
No.4
Java&Spring記事人気No4
Next.js
Next.jsのApp RouterとPages Routerの役割の違いを完全解説!初心者でもわかるNext.jsの基本概念
No.5
Java&Spring記事人気No5
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.6
Java&Spring記事人気No6
React
React開発におすすめのVSCode拡張機能まとめ!初心者でもすぐ使える便利ツール紹介
No.7
Java&Spring記事人気No7
Next.js
Next.jsのApp RouterとServer Componentsの関係まとめ!初心者でもわかるNext.jsの新しい仕組み
No.8
Java&Spring記事人気No8
React
Reactの条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐