ReactJSでラジオボタンをマスターして、ユーザーインターフェースをレベルアップしよう!

2024-04-02

ReactJSでラジオボタンを使用する方法

HTMLの <input type="radio"> を使う

最も簡単な方法は、HTMLの <input type="radio"> タグを使う方法です。

<input type="radio" name="gender" value="male" /> 男性
<input type="radio" name="gender" value="female" /> 女性

name 属性は、ラジオボタングループの名前を指定します。同じ名前を持つラジオボタンは、同じグループに属します。value 属性は、選択されたときの値を指定します。

ReactJSでは、これらの属性をJSXで直接記述できます。

<input type="radio" name="gender" value="male" /> 男性
<input type="radio" name="gender" value="female" /> 女性

useState Hookを使って、ラジオボタンの状態を管理できます。

const [gender, setGender] = useState('male');

const handleChange = (event) => {
  setGender(event.target.value);
};

return (
  <div>
    <input type="radio" name="gender" value="male" checked={gender === 'male'} onChange={handleChange} /> 男性
    <input type="radio" name="gender" value="female" checked={gender === 'female'} onChange={handleChange} /> 女性
  </div>
);

useState Hookは、初期値と状態更新関数を返します。gender 変数は、現在の選択状態を保持します。handleChange 関数は、ラジオボタンが選択されたときに呼び出され、gender 変数を更新します。

Material UIなどのライブラリを使うと、スタイルが設定されたラジオボタンを簡単に使用できます。

import { RadioGroup, Radio } from '@material-ui/core';

const handleChange = (event) => {
  // ...
};

return (
  <RadioGroup value={gender} onChange={handleChange}>
    <Radio value="male" label="男性" />
    <Radio value="female" label="女性" />
  </RadioGroup>
);

これらの方法のどれを選択しても、ReactJSでラジオボタンを実装することができます。自分のプロジェクトに合った方法を選択してください。




<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>React Radio Buttons</title>
</head>
<body>
  <div id="root"></div>
  <script src="https://unpkg.com/react@17/umd/react.development.js"></script>
  <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>

  <script>
    // 1. HTMLの `<input type="radio">` を使う

    const App1 = () => {
      return (
        <div>
          <input type="radio" name="gender" value="male" /> 男性
          <input type="radio" name="gender" value="female" /> 女性
        </div>
      );
    };

    // 2. `useState` Hookを使う

    const App2 = () => {
      const [gender, setGender] = useState('male');

      const handleChange = (event) => {
        setGender(event.target.value);
      };

      return (
        <div>
          <input type="radio" name="gender" value="male" checked={gender === 'male'} onChange={handleChange} /> 男性
          <input type="radio" name="gender" value="female" checked={gender === 'female'} onChange={handleChange} /> 女性
        </div>
      );
    };

    // 3. Material UIなどのライブラリを使う

    const App3 = () => {
      import { RadioGroup, Radio } from '@material-ui/core';

      const [gender, setGender] = useState('male');

      const handleChange = (event) => {
        setGender(event.target.value);
      };

      return (
        <RadioGroup value={gender} onChange={handleChange}>
          <Radio value="male" label="男性" />
          <Radio value="female" label="女性" />
        </RadioGroup>
      );
    };

    ReactDOM.render(<App1 />, document.getElementById('root'));
  </script>
</body>
</html>

このコードをブラウザで開くと、3つのラジオボタンが表示されます。

  1. 2番目のラジオボタンは、useState Hookを使って実装されています。

実行方法

このコードを実行するには、次の手順が必要です。

  1. Node.jsをインストールします。
  2. プロジェクトフォルダを作成し、そこに以下のファイルを作成します。
    • index.html
    • app.js
  3. app.js に上記のコードを記述します。
  4. 以下のコマンドを実行して、プロジェクトをインストールします。
npm install
  1. 以下のコマンドを実行して、サーバーを起動します。
npm start
  1. ブラウザで http://localhost:3000 を開きます。

応用

上記のコードは基本的な例です。実際のプロジェクトでは、以下のような応用が考えられます。

  • ラジオボタンの値に基づいて、異なるコンテンツを表示する。
  • ラジオボタンの値をフォームデータとして送信する。
  • ラジオボタンを無効化または有効化する。

ReactJSでラジオボタンを使用するには、いくつかの方法があります。自分のプロジェクトに合った方法を選択してください。




ReactJSでラジオボタンを使用するその他の方法

const [gender, setGender] = useState('male');

const radioRef = useRef();

const handleChange = (event) => {
  setGender(event.target.value);
};

return (
  <div>
    <input type="radio" name="gender" value="male" ref={radioRef} checked={gender === 'male'} onChange={handleChange} /> 男性
    <input type="radio" name="gender" value="female" checked={gender === 'female'} onChange={handleChange} /> 女性
  </div>
);

radioRef.current を使って、ラジオボタンのDOM要素にアクセスできます。

カスタムコンポーネントを使う

ラジオボタンを再利用したい場合は、カスタムコンポーネントを作成できます。

const Radio = ({ label, value, checked, onChange }) => {
  return (
    <div>
      <input type="radio" name="gender" value={value} checked={checked} onChange={onChange} />
      <label for={value}>{label}</label>
    </div>
  );
};

const App = () => {
  const [gender, setGender] = useState('male');

  const handleChange = (event) => {
    setGender(event.target.value);
  };

  return (
    <div>
      <Radio label="男性" value="male" checked={gender === 'male'} onChange={handleChange} />
      <Radio label="女性" value="female" checked={gender === 'female'} onChange={handleChange} />
    </div>
  );
};

第三者ライブラリを使う

React-Radio-Buttonsなどの第三者ライブラリを使うと、簡単にラジオボタンを実装できます。

import ReactRadioButtons from 'react-radio-buttons';

const App = () => {
  const [gender, setGender] = useState('male');

  const handleChange = (event) => {
    setGender(event.target.value);
  };

  return (
    <div>
      <ReactRadioButtons
        options={[
          { value: 'male', label: '男性' },
          { value: 'female', label: '女性' },
        ]}
        value={gender}
        onChange={handleChange}
      />
    </div>
  );
};

html reactjs


HTML/XHTMLでテキストを効果的に強調する方法

<b> と <strong> はどちらもテキストを太字にするために使用されますが、意味合いが異なります。<b> は、視覚的に太字にするだけの場合に使用します。<strong> は、視覚的に太字にするだけでなく、そのテキストが重要であることを意味する場合に使用します。...


jQueryの$().html()メソッドでHTMLエンティティをデコードする方法

HTMLエンティティは、特殊文字を表すために使用される特殊な記号です。例えば、"&lt;" は "<" 記号を表し、"&gt;" は ">" 記号を表します。これらのエンティティは、Webページで特殊文字を表示するために必要です。しかし、JavaScriptで文字列を処理する場合、HTMLエンティティを元の文字に戻すことが必要になる場合があります。これが、デコードと呼ばれるものです。...


box-sizingプロパティを使って要素の幅を100%マイナスパディングにする

要素の幅を100%マイナスパディングにする方法はいくつかあります。それぞれの方法にはメリットとデメリットがあり、使用する方法は状況によって異なります。方法calc() 関数を使うこの方法は、すべてのブラウザでサポートされています。メリット:...


Reactコンポーネントの初期化をマスターしよう!getInitialState、constructor、defaultProps、useState徹底比較

この解説では、React と ES6 における getInitialState メソッドの使用方法について説明します。getInitialState は、React コンポーネントの初期状態を設定するために使用されますが、ES6 ではクラスコンポーネントを使用する際に注意が必要です。...


【まるっと解決】React Router v4.0.0 で「Uncaught TypeError: Cannot read property 'location' of undefined」が起きた時の対処法

React Router v^4.0.0 で、以下のエラーが発生する場合があります。このエラーは、location オブジェクトにアクセスしようとしたときに発生します。location オブジェクトは、ブラウザの現在の URL 情報を含むオブジェクトです。...