При использовании версии React, поддерживающей зацепки (> 16.8) (с учетом рассматриваемого стекаблица)
Необходимо использовать метод useState()
для изменения внутреннего состояния React (Материал Дизайн) Компонент.Это сообщает компоненту Radio Radio Group, какую радио-кнопку вы хотите использовать по умолчанию, создав свойство состояния с именем value
, которое установлено на male
.Затем свойство value
используется в качестве атрибута value
«значение» - и это устанавливает значение по умолчанию.
Это простое изменение в строке 24 ссылочной песочницы:
Изменение:
const [value, setValue] = React.useState("female");
Кому:
const [value, setValue] = React.useState("male");
При использовании версии React без крючков (<16.8) </strong>
Вам нужно будет переписать вашу функцию как React Component Class, используя стандартную переменную состояния.К сожалению, версия Material Design также является проблемой в этом случае, так как Material Design вызывает метод React, которого нет в более ранней версии React (createContext()
).Понизьте версию Material Design до v1.0.0, если вы не используете React 16.8.
Вот StackBlitz, который демонстрирует это второе (более сложное) решение:
StackBlitz
и соответствующий код:
class RadioButtonsGroup extends React.Component {
constructor(props) {
super(props);
this.handleChange = this.handleChange.bind(this);
this.classes = {
root: {
display: "flex"
},
formControl: {
margin: 13
},
group: {
margin: 10
}
};
this.state = {
value: "male"
};
}
handleChange(event) {
this.setState({ value: event.target.value });
}
render() {
return (
<div className={this.classes.root}>
<FormControl component="fieldset" className={this.classes.formControl}>
<FormLabel component="legend">Gender</FormLabel>
<RadioGroup
aria-label="Gender"
name="gender1"
className={this.classes.group}
value={this.state.value}
onChange={this.handleChange}
>
<FormControlLabel
value="female"
control={<Radio />}
label="Female"
/>
<FormControlLabel value="male" control={<Radio />} label="Male" />
<FormControlLabel value="other" control={<Radio />} label="Other" />
<FormControlLabel
value="disabled"
disabled
control={<Radio />}
label="(Disabled option)"
/>
</RadioGroup>
</FormControl>
<FormControl component="fieldset" className={this.classes.formControl}>
<FormLabel component="legend">Gender</FormLabel>
<RadioGroup
aria-label="gender"
name="gender2"
className={this.classes.group}
value={this.state.value}
onChange={this.handleChange}
>
<FormControlLabel
value="female"
control={<Radio color="primary" />}
label="Female"
labelPlacement="start"
/>
<FormControlLabel
value="male"
control={<Radio color="primary" />}
label="Male"
labelPlacement="start"
/>
<FormControlLabel
value="other"
control={<Radio color="primary" />}
label="Other"
labelPlacement="start"
/>
<FormControlLabel
value="disabled"
disabled
control={<Radio />}
label="(Disabled option)"
labelPlacement="start"
/>
</RadioGroup>
<FormHelperText>labelPlacement start</FormHelperText>
</FormControl>
</div>
);
}
}