カテゴリ: React 更新日: 2025/12/13

ReactでイベントハンドラとStateを組み合わせてUIを動かす方法

イベントハンドラとStateを組み合わせてUIを動かす方法
イベントハンドラとStateを組み合わせてUIを動かす方法

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

生徒

「Reactでボタンを押すと画面の文字が変わるようにしたいです。」

先生

「それならイベントハンドラとStateを組み合わせると実現できます。」

生徒

「イベントハンドラとStateって何ですか?」

先生

「イベントハンドラはボタンや入力などユーザーの操作に応じて処理を実行する関数です。StateはReactコンポーネントが持つ状態のことで、画面の表示を動的に変えるために使います。」

生徒

「具体的にどうやって組み合わせるんですか?」

先生

「では、ボタンを押したときに文字が変わる簡単な例を見てみましょう。」

1. Stateの基本

1. Stateの基本
1. Stateの基本

ReactではStateを使うことで、画面に表示される内容を動的に変更できます。StateはuseStateというフックを使って定義します。useStateは、現在の状態とその状態を更新する関数を返します。

2. イベントハンドラの基本

2. イベントハンドラの基本
2. イベントハンドラの基本

イベントハンドラは、ボタンのクリックや入力などのイベントに反応して処理を行う関数です。ReactではonClickやonChangeなどのプロパティに関数を指定します。

3. Stateとイベントハンドラを組み合わせる

3. Stateとイベントハンドラを組み合わせる
3. Stateとイベントハンドラを組み合わせる

import React, { useState } from "react";

function App() {
  const [message, setMessage] = useState("こんにちは!");

  const handleClick = () => {
    setMessage("ボタンがクリックされました!");
  };

  return (
    <div>
      <h1>{message}</h1>
      <button onClick={handleClick}>クリックしてみよう</button>
    </div>
  );
}

export default App;
(画面に「こんにちは!」と表示され、ボタンを押すと「ボタンがクリックされました!」に変わります)

4. 入力フォームのState連動

4. 入力フォームのState連動
4. 入力フォームのState連動

ボタンだけでなく、入力フォームでもStateとイベントハンドラを組み合わせることで、入力内容をリアルタイムで画面に反映できます。


function App() {
  const [text, setText] = useState("");

  const handleChange = (e) => {
    setText(e.target.value);
  };

  return (
    <div>
      <input type="text" onChange={handleChange} placeholder="文字を入力" />
      <p>入力内容: {text}</p>
    </div>
  );
}
(入力欄に文字を入力すると、下にリアルタイムで入力内容が表示されます)

5. 複数イベントでStateを操作する

5. 複数イベントでStateを操作する
5. 複数イベントでStateを操作する

複数のボタンや入力がある場合でも、イベントハンドラごとにStateを更新する関数を作成して組み合わせることができます。これによりUIの状態を簡単に動的に変化させることができます。


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

  const increment = () => setCount(count + 1);
  const decrement = () => setCount(count - 1);

  return (
    <div>
      <h1>カウント: {count}</h1>
      <button onClick={increment}>増やす</button>
      <button onClick={decrement}>減らす</button>
    </div>
  );
}
(「増やす」を押すとカウントが増え、「減らす」を押すとカウントが減ります)

6. UIの動きを整理するポイント

6. UIの動きを整理するポイント
6. UIの動きを整理するポイント

イベントハンドラとStateを組み合わせると、UIを動的に制御できますが、ポイントは次の通りです。

  • Stateは必要な部分だけに使う
  • イベントハンドラは短く、わかりやすく書く
  • 複数イベントがある場合は共通関数化や分岐を活用する
  • UIの状態がどのように変化するかを意識してState設計を行う

これらを意識すると、Reactでのイベント処理とUI更新がスムーズになり、初心者でも簡単に動的なアプリを作ることができます。

まとめ

まとめ
まとめ

イベントハンドラとStateを組み合わせる意味を振り返ろう

この記事では、ReactにおいてイベントハンドラStateを組み合わせて ユーザーインターフェースを動かす方法について、基礎から順番に解説してきました。 Reactの最大の特徴は、「ユーザーの操作に応じて画面が自動的に切り替わる」点にあります。 その中心にあるのが、イベントハンドラとStateの連携です。

ボタンをクリックしたとき、入力欄に文字を入力したとき、 その操作をきっかけにStateが更新され、Stateの変化に応じて画面が再描画される。 この一連の流れを理解することで、Reactの仕組みが一気に分かりやすくなります。 単に「値を変える」のではなく、「状態が変わることでUIが更新される」という考え方が、 React開発ではとても重要です。

StateはUIの設計図として考える

Stateは、コンポーネントが持つ「今の状態」を表すものです。 表示される文字、カウントの数値、入力フォームの内容など、 ユーザー操作によって変化する情報はすべてStateで管理できます。 Stateを正しく設計することで、UIの動きが整理され、 コードも読みやすく、保守しやすくなります。

この記事で紹介したように、useStateを使えば、 現在の値と更新用の関数をセットで扱うことができます。 この更新関数をイベントハンドラの中で呼び出すことで、 ユーザーの操作とStateの変更を自然につなげることができます。 Reactでは、直接値を書き換えるのではなく、 必ずState更新関数を使うという点も重要なポイントです。

イベントハンドラはUI操作の入口

イベントハンドラは、ボタンのクリックや入力の変更など、 ユーザーの操作を受け取るための入口です。 onClickonChangeなどを使うことで、 Reactは「いつ」「どんな操作が行われたか」を検知できます。 そのタイミングでStateを更新することで、 UIがリアルタイムに変化します。

イベントハンドラはできるだけ短く、分かりやすく書くことが大切です。 処理が複雑になりそうな場合は、関数を分けたり、 共通の処理をまとめたりすることで、 コード全体の見通しが良くなります。 イベントとStateの関係を整理することが、 ReactでのUI設計のコツと言えるでしょう。

サンプルプログラムで流れを再確認

ここで、イベントハンドラとStateを組み合わせた基本的な構成を、 あらためてサンプルプログラムで確認してみましょう。 ユーザー操作によってStateが変わり、 それが画面に反映される流れを意識してみてください。


import React, { useState } from "react";

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

  const handleClick = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <p>現在の数値: {count}</p>
      <button onClick={handleClick}>増やす</button>
    </div>
  );
}

export default Sample;

このコードでは、ボタンをクリックするたびにStateが更新され、 画面の数値が自動的に変化します。 「イベント → State更新 → 再描画」というReactの基本サイクルが、 シンプルな形で表現されています。 まずはこの流れをしっかり理解し、 自分で書けるようになることが重要です。

イベントとStateを理解するとReactが楽しくなる

イベントハンドラとStateを組み合わせられるようになると、 Reactでできることが一気に広がります。 カウンター、フォーム、切り替え表示、条件分岐によるUI変更など、 多くの機能はこの仕組みの応用です。 基本を丁寧に身につけることで、 複雑なアプリケーションにも対応できる力が育っていきます。

初心者のうちは「なぜ画面が変わるのか」を意識しながら、 Stateの変化とUIの関係を追ってみることが大切です。 何度もコードを書いて試すことで、 Reactの考え方が自然と身についていくでしょう。

先生と生徒の振り返り会話

生徒

「ボタンを押しただけで画面が変わる理由が、 Stateとイベントハンドラのおかげだと分かりました。」

先生

「その理解はとても大切ですね。 ReactではStateの変化が画面を動かします。」

生徒

「イベントハンドラは、 Stateを更新するきっかけなんですね。」

先生

「その通りです。 イベントとStateの関係を意識できると、 UI設計がとても楽になりますよ。」

生徒

「まずは小さなサンプルをたくさん作って、 慣れていこうと思います。」

先生

「それが一番の近道です。 今日学んだ内容は、React開発の基礎そのものですよ。」

カテゴリの一覧へ
新着記事
New1
React
Reactコンポーネントの再利用と分割を完全マスター!初心者でもわかるコンポーネント設計
New2
React
ReactでAxiosインターセプターの使い方を完全ガイド!初心者でもわかるリクエストとレスポンスの処理方法
New3
React
JSXの書き方!初心者でもわかるReactタグと属性の基本ルール解説
New4
React
ReactとDockerを使った開発環境構築の基本を徹底解説!初心者でもわかるReactとDockerの連携方法
人気記事
No.1
Java&Spring記事人気No1
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
React
Reactのイベントハンドリングのアンチパターンまとめ!初心者でもわかる注意点
No.3
Java&Spring記事人気No3
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.4
Java&Spring記事人気No4
React
Reactのカスタムフックの作り方を完全ガイド!再利用可能なロジックを切り出す仕組み
No.5
Java&Spring記事人気No5
React
ReactでFetch APIのローディング状態を管理する方法|初心者にもわかる解説
No.6
Java&Spring記事人気No6
React
create-react-appでReactプロジェクトを作成する手順を初心者向けに完全解説!
No.7
Java&Spring記事人気No7
React
ReactのuseStateとuseEffectでよくあるエラーと解決方法ガイド!初心者でもわかるReactフック
No.8
Java&Spring記事人気No8
React
Reactでファイルアップロードを実装する方法を解説!Fetch APIで画像やPDFを送る仕組みを初心者向けに紹介