本記事では、Reactで選択されたラジオボタンのvalue属性の値を取得(判定)する方法についてサンプルコードを用いて解説しています。
Reactの学習におすすめ参考書
モダンJavaScriptの基本から始める React実践の教科書
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
後輩ちゃん
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!
Contents
サンプルコード
選択されたラジオボタンのvalue属性の値を取得するサンプルコードを用意しました。注目して欲しいポイントをコメントアウトに書いているので、そこを重点的に解説していきます。
import { useState } from "react";
function App() {
const RADIO_VALUES = ["A", "B", "C"];
// 注目ポイント②
const [selectedRadioBtnValue, setSelectedRadioBtnValue] = useState("");
// 注目ポイント③
const onRadioBtnChanged = (e) => setSelectedRadioBtnValue(e.target.value);
return (
<>
<p>選択されたラジオボタン:{selectedRadioBtnValue}</p>
{/* 注目ポイント① */}
{RADIO_VALUES.map((radioValue) => (
<label key={radioValue}>
<input
type="radio"
value={radioValue}
name="sample"
onChange={onRadioBtnChanged}
/>
{radioValue}
</label>
))}
</>
);
}
export default App;
注目ポイント①:ラジオボタンの生成
{RADIO_VALUES.map((radioValue) => (
<label key={radioValue}>
<input
type="radio"
value={radioValue}
name="sample"
onChange={onRadioBtnChanged}
/>
{radioValue}
</label>
))}
注目ポイントの1つ目は、ラジオボタンの生成です。value属性にセットする値を配列で用意しmapメソッドで展開します。
注目ポイント②:選択されたラジオボタンの値
const [selectedRadioBtnValue, setSelectedRadioBtnValue] = useState("");
注目ポイントの2つ目は、選択されたラジオボタンのvalue属性の値を代入する変数をuseStateで生成します。これは、おまけで解説する初期設定で特定のラジオボタンにチェックを入れる時にも使用します。
注目ポイント③:選択されたラジオボタンの値
const onRadioBtnChanged = (e) => setSelectedRadioBtnValue(e.target.value);
注目ポイントの3つ目は、選択されたラジオボタンのvalue属性の値をuseStateで渡された更新用の関数を使用し変数に代入します。引数eに対してtarget.valueを指定することでチェックされたラジオボタンのvalue属性の値を取得することが出来ます。
おまけ:特定のラジオボタンにチェックを入れた状態にする
先ほど紹介したサンプルコードは、最初は何も選択されていない状態です。これを特定のラジオボタンにチェックを入れた状態から始めたい場合は、以下のようにコードを書き替えます。
import { useState } from "react";
function App() {
const RADIO_VALUES = ["A", "B", "C"];
// 変更点①
const [selectedRadioBtnValue, setSelectedRadioBtnValue] = useState("B");
const onRadioBtnChanged = (e) => setSelectedRadioBtnValue(e.target.value);
return (
<>
<p>選択されたラジオボタン:{selectedRadioBtnValue}</p>
{RADIO_VALUES.map((radioValue) => (
<label key={radioValue}>
<input
type="radio"
value={radioValue}
name="sample"
onChange={onRadioBtnChanged}
// 変更点②
checked={radioValue === selectedRadioBtnValue}
/>
{radioValue}
</label>
))}
</>
);
}
export default App;
書き換えた箇所と理由
- useStateの初期値にチェックを入れた状態にしたいラジオボタンのvalue属性の値をセット
- checked属性の値にuseStateの初期値が代入された変数 === mapメソッドで展開されたvalue属性の値を比較するとuseStateの初期値に設定したラジオボタンのみtrueがセットされる