reactjs - دکمههای رادیویی Material UI که بهصورت پویا تولید شدهاند قابل کلیک نیستند


لینک به نسخه نمایشی: https://codesandbox.io/s/material-demo-9fwlz

در حالی که به نظر میرسد این کد باید عناصر رادیویی قابل انتخاب داشته باشد، ندارد. نظری دارید که چه چیزی خراب است؟ این از قطعه نمونه material-ui برگرفته شده و تنها تغییر این است که عناصر رادیویی درون RadioGroup به صورت پویا از props ورودی ایجاد میشوند.

export default function RadioButtonsGroup(props) {
  const [value, setValue] = React.useState(null);

  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
    setValue((event.target as HTMLInputElement).value);
  };

  return (
    <FormControl component="fieldset">
      <FormLabel component="legend">Gender</FormLabel>
      <RadioGroup
        aria-label="gender"
        name="gender1"
        value={value}
        onChange={handleChange}
      >
        {props.options.map(([value, readable], index) => (
          <FormControlLabel
            key={index}
            value={value}
            control={<Radio />}
            label={readable}
          />
        ))}
      </RadioGroup>
    </FormControl>
  );
}

پاسخ شماره ۱

آزاد، من فقط یک احمقم.

  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
    setValue((event.target as HTMLInputElement).value);
  };

نوع event.target.value، string است. مقادیر من number هستند.

const handleChange = (e) => {
  setValue(Number(e.target.value));
}

عالیه، اون مقدار تبدیل به یک string شد و همه چیز.

پاسخ شماره ۲

اگر مقدار شما یک عدد است، این عدد را با استفاده از toString() به رشته تبدیل کنید

<FormControlLabel
key={index}
value={value.toString()}
control={<Radio />}
label={readable}
/>