UseStateによる状態管理
メニューを表示するにはスワイプしてください
useState フックは、関数コンポーネントに状態を持たせるための基本的な React フック。コンポーネント内で状態変数を宣言および更新する方法を提供。
構文:
useState フックを使用するには、初期状態(initialState)を引数として渡して呼び出す。戻り値は 2 要素の配列で、1 つ目が現在の状態値(state)、2 つ目が状態を更新する関数(setState)。
const [state, setState] = useState(initialState);
-
state変数の名前は任意に設定可能。格納または更新する状態を正確に表す変数名(例:inputValue、page、number、nameなど)を使用することが推奨される。 -
同様に、
setState関数の名前も柔軟に設定できるが、特定のパターンに従うことが一般的な慣習:setState関数名は "set" で始まり、対応する状態変数名を続ける。たとえば、state変数がmailの場合、対応するsetState関数は通常setMailとなる。
setState を呼び出すと、React はコンポーネントを再レンダリングし、新しい値で状態を更新。useState を使用する場合、状態変数はオブジェクトである必要はなく、数値・文字列・真偽値などのプリミティブ値や、配列・オブジェクトなどの複雑な値も利用可能。
例 1:
Counter コンポーネントの構築。自身の状態を保持。Increment ボタンがクリックされると、状態を更新し、コンポーネントの再レンダリングを実行。
import React, { useState } from "react";
const Counter = () => {
const [count, setCount] = useState(0);
const increment = () => {
setCount(count + 1);
};
return (
<div>
<p>Count: {count}</p>
<button onClick={increment}>Increment</button>
</div>
);
};
この例では、useState フックを使用して、初期値 count の状態変数 0 を宣言。setCount 関数は、ボタンがクリックされるたびに count 変数を更新。
行ごとの説明:
- 1行目: React ライブラリから
useStateフックをインポートし、その機能を利用; - 3行目: 通常の関数構文で
Counterコンポーネントを定義; - 4行目:
useStateフックで状態を初期化;
countはカウンターの値を表す。初期値はuseState(0)の括弧内で0を指定;setCountは必要に応じて状態を更新する関数。
- 6〜8行目: この JavaScript アロー関数は状態更新のロジックを処理。"increment" ボタンがクリックされたときに実行。関数内で
setCountを使い状態を更新; - 10〜15行目: コンポーネントのマークアップをレンダリング。12行目で現在の状態値 (
count) を表示。13行目のボタンはonClick属性でクリック時に実行する関数を定義。ここではincrement関数を渡す。
例 2:
独立した状態を持つ Form コンポーネントの構築。ユーザーに入力フィールドで名前の入力を促し、入力内容に応じて表示内容を変更。
import React, { useState } from "react";
const Form = () => {
const [userName, setUserName] = useState("");
const handleChange = (event) => {
const inputValue = event.target.value;
setUserName(inputValue);
};
return (
<div>
<input
type="text"
value={userName}
onChange={handleChange}
placeholder="Your name"
/>
<p>Hello, {userName}!</p>
</div>
);
};
この例では、useState フックを使用して、初期値が空文字列の状態変数 userName を宣言。setUserName 関数は、必要に応じて userName 変数を更新。
行ごとの説明:
- 1行目:
useStateフックをReactライブラリからインポートし、その機能を利用; - 3行目:標準的な関数構文を用いて
Formコンポーネントを定義; - 4行目:
useStateフックを使って初期状態を設定;
userNameは入力フィールドの値を表し、初期値は空文字列("")で、useState("")の括弧内で指定;setUserNameは必要に応じて状態を更新するための関数;
- 6〜9行目:このJavaScriptアロー関数は状態更新のロジックを処理。ユーザーがフィールドに入力した際にトリガーされる。関数内で
event.target.valueを使って入力値を取得し、setUserName関数でその値に状態を更新; - 11〜21行目:コンポーネントのマークアップをレンダリング。
- 15行目では、
value属性を使ってuserNameを入力の初期値として設定; - 16行目では、
onChange属性で入力値が変更された際に呼び出す関数を指定。
1. useStateフックについて正しい記述はどれですか?
2. setStateフックから返されるuseState関数の目的は何ですか?
3. useStateフックを使用する際、初期状態の値はどのように設定しますか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください