Appearance
なぜ必要になったか?
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}/>
);
};