Reactで入力フォームを使うときの基本について、簡単にまとめました。
大まかな流れ
- Stateを用意
- 入力イベントの紐付け
- ボタンやフォーム送信イベントを設定
- クリアボタンの追加やリセット機能
- バリデーションの追加
Stateを用意
Reactでは、フォームの入力内容をuseState
で状態を管理している
基本のコード例
import React, { useState } from "react";
const Example = () => {
const [text, setText] = useState(""); // 入力値を管理する状態
const handleChange = (e) => {
setText(e.target.value); // 入力値を状態に反映
};
return (
<div>
<input
type="text"
value={text}
onChange={handleChange}
placeholder="ここに入力"
/>
<p>あなたの入力: {text}</p>
</div>
);
};
export default Example;
-
useState
の使い方-
useState("")
で初期値を空文字に設定 -
text
は現在の入力値 -
setText
でtext
を更新
-
-
動き
- 入力が変わると、
handleChange
が呼ばれる - 新しい値が
text
に保存され、画面に反映される
- 入力が変わると、
入力イベントの紐付け
onChange
-
onChange
は、フォームの内容が変わったときに実行される「イベント」のこと - 文字を入力したり、選択肢を選んだりすると
onChange
が動く
基本の仕組み
<input
type="text" // テキスト入力欄
value={value} // 入力欄に表示する値を設定
onChange={(e) => setValue(e.target.value)} // 入力が変わるたびに状態を更新
/>
-
value
: 入力欄に表示される内容 -
onChange
: 入力内容が変わるたびに呼び出される関数 -
e.target.value
: 入力された値を取得する
e.target.value
e.target.value
はフォームに入力された内容(値)を取得する方法
-
e
って何?-
e
は「イベントオブジェクト」 - Reactでは、入力やクリックなどのイベントが発生すると、自動的にこの
e
が関数に渡される
-
-
e.target
って何?-
e.target
は、イベントが発生した要素(HTML要素)を指す - たとえば、
<input>
で文字を入力した場合、e.target
はその<input>
要素
-
-
e.target.value
って何?-
e.target.value
は、<input>
の現在の値(ユーザーが入力した文字)を取得する
-
図解
<input type="text" value="React" />
- ユーザーが「React」と入力している場合、
-
e.target
:<input>
要素そのもの -
e.target.value
: "React"
-
e.target.valueの使い方
const handleChange = (e) => {
console.log(e.target.value); // 入力された値をコンソールに表示
};
<input
type="text"
onChange={handleChange} // 入力が変わるたびにhandleChangeを実行
/>
- 入力欄に「こんにちは」と入力したら、コンソールに「こんにちは」と表示される
コード例
import React, { useState } from "react";
const Greeting = () => {
const [name, setName] = useState("");
return (
<div>
<input
type="text"
value={name}
onChange={(e) => setName(e.target.value)}
placeholder="名前を入力してください"
/>
<p>こんにちは、{name}さん!</p>
</div>
);
};
export default Greeting;
- 入力した名前がそのまま表示される
-
onChange={(e) => setName(e.target.value)}
で、入力内容を状態に保存
ポイントまとめ
-
value
とonChange
はセットで使う-
value
で表示する内容を設定 -
onChange
で入力内容を状態に保存
-
-
e.target.value
を使う- 入力された値を取得するには、
e.target.value
を使う
- 入力された値を取得するには、
-
状態(useState)で値を管理する
- 入力内容は必ず
useState
- 入力内容は必ず