RadioButtonPanel
RadioButtonをパネル型に視覚的強化した単一選択コンポーネントです。選択肢に説明やステータスを付加するとき、視覚的に強調して操作領域を確保するときに使います。
使用上の注意
ユースケースに応じてコンポーネントを使い分ける
選択肢にラベルテキストを含む複数の要素を追加表示させる場合に使用する
以下のような場合にラジオボタンパネルを使用します。選択肢が同程度の長さで簡潔なラベルテキストのみの場合は、基本的にRadioButtonを使用してください。
- 選択肢を適切に選択させるために、補足説明のテキストやステータスラベルを含む複数の要素を追加したい場合
- ラベルテキストが短く画面内の他の要素と比べて認識しづらいなどの理由で、選択肢を視覚的に強調して表示したい場合
選択操作に関わるコンポーネントの使い分けは選択コンポーネントの使い分けを参照してください。
ビューの切り替えを操作するUIとして使用しない
ラジオボタンパネルは入力後に、送信や保存といったtype属性がsubmitのボタンなどを押すことで入力内容が反映される場合に使用してください。
ラジオボタンパネルは1クリックで選択肢ごとに異なる結果となるため、誤入力によって意図しない結果が反映されてしまう可能性あります。
コレクションなどでオブジェクトの表示方法を切り替える場合など、即時反映を前提とする箇所ではTabBarやSegmentedControl、またはSwitchを使用してください。
ラジオボタンパネル内に操作可能な要素を含めない
ラジオボタンパネル内には、アンカーリンクやボタンなど、ユーザーが操作可能な要素は配置しないでください。 これらを配置してしまうと、ユーザーがフォーム入力するための操作難易度が上がり、誤操作などにつながるためです。(※1)
- リンクを置きたい場合は、Fieldsetの
helpMessagepropsなどを使用します。 - Comboboxなどで選択肢に応じて段階的に別の操作をさせたい場合は、RadioButtonと
disabled状態を組み合わせるか、ステップを複数に分けたモードを検討します。
Do
ユーザーは選択する操作に集中でき、それ以外の操作と区別しやすい
Don't
ユーザーが選択操作に集中できず、操作難易度が上がる
状態
デフォルト
RadioButtonPanelは常に1つの選択肢が選択されているコンポーネントのため、選択肢の中から1つデフォルト値に設定するものを決めてください。(参考:デフォルト値に設定する値)
使い方チェックリスト
参照元:使用上の注意 > ユースケースに応じてコンポーネントを使い分ける > 選択肢にラベルテキストを含む複数の要素を追加表示させる場合に使用する 「使用上の注意 > ユースケースに応じてコンポーネントを使い分ける > 選択肢にラベルテキストを含む複数の要素を追加表示させる場合に使用する」の本文へ移動
- Should選択肢に補足説明やステータスを付加する場合、または選択肢を視覚的に強調したい場合に RadioButtonPanel を使用する
- 選択肢を適切に選択させるために、補足説明のテキストやステータスラベルを含む複数の要素を追加したい場合
- ラベルテキストが短く画面内の他の要素と比べて認識しづらいなどの理由で、選択肢を視覚的に強調して表示したい場合
- Should選択肢が同程度の長さで簡潔なラベルテキストのみの場合は、基本的に RadioButton を使用する
参照元:使用上の注意 > ユースケースに応じてコンポーネントを使い分ける > ビューの切り替えを操作するUIとして使用しない 「使用上の注意 > ユースケースに応じてコンポーネントを使い分ける > ビューの切り替えを操作するUIとして使用しない」の本文へ移動
- MustRadioButtonPanel は入力後に `送信` や `保存` などの type=submit ボタンを押すことで反映される場面で使用する
- 即時反映を前提とする箇所では RadioButtonPanel を使わず、TabBar / SegmentedControl / Switch を使用する
参照元:使用上の注意 > ラジオボタンパネル内に操作可能な要素を含めない 「使用上の注意 > ラジオボタンパネル内に操作可能な要素を含めない」の本文へ移動
- AvoidRadioButtonPanel 内にアンカーリンクやボタンなど、ユーザーが操作可能な要素を配置しない
- リンクを置きたい場合は、Fieldset の `helpMessage` props などを使用する
- 選択肢に応じて段階的に別の操作をさせたい場合は、RadioButton と `disabled` 状態の組み合わせ、またはステップを複数に分けたモードを検討する
参照元:状態 > デフォルト 「状態 > デフォルト」の本文へ移動
- Must選択肢の中から 1 つデフォルト値に設定するものを決める
Props
label必須
string number false true ReactElement<any, string | JSXElementConstructor<any>> Iterable<ReactNode> ReactPortal
参考文献
※1. <label>: The Label element - HTML: HyperText Markup Language | MDN別タブで開く