Skip to content
sumnail

選択状態のラジオボタンを解除する

created at : 2024/07/12

React
Material-UI
RadioButton

なぜ必要になったか?

Material-UIのラジオボタンは、onChangeで変更イベントを扱うことが出来ますが、選択状態を解除することが出来ません。
ここでは、RadioのonClickを使って選択状態を解除する方法を紹介します。

選択状態のラジオボタンを解除する方法

サンプルコードで確認してみます。 Radio単体は、onClickを使用してチェックを外すことができます。

tsx
import { useState } from "react";
import { Radio } from "@mui/material";

export const RadioComponent = () => {
    const [checked, setChecked] = useState(false);

    const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {
        setChecked(!checked);
    }

    return (
        <Radio checked={checked} onClick={handleClick}/>
    );
};

型エラーが発生する場合

onClickを使用して、eventから直接event.target.valueで取得すると、Property 'value' does not exist on type 'EventTarget'.ts(2339)と型エラーとなります。

この場合、event.target as HTMLButtonElementとすることで、型エラーは解決できます。

tsx
import { useState } from "react";
import { Radio } from "@mui/material";

export const RadioComponent = () => {
    const [checked, setChecked] = useState(false);
    const [selected, setSelected] = useState('');

    const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {
        const target = event.target as HTMLButtonElement;
        const value = target.value;

        setChecked(!checked);
        setSelected(value);
    }

    return (
        <Radio checked={checked} value={1} onClick={handleClick}/>
    );
};