admin管理员组文章数量:1425652
We are struggling to have a default value automatically set on page load for a RadioGroup. The documentation (/) indicates that there is a defaultValue property, but it does not seem to take effect.
We played around with this in the Sandbox demo here and were unable to get it working:
The code taken from the Sandbox demo:
<FormControl ponent="fieldset" className={classes.formControl}>
<FormLabel ponent="legend">Gender</FormLabel>
<RadioGroup
aria-label="Gender"
name="gender1"
className={classes.group}
value={value}
onChange={handleChange}
defaultValue="male">
<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>
We played around with this code but were unable to get the "male" radio button to be selected on page load. Is there another property we can set for the default?
FOLLOW UP QUESTION: we are using React 16.2. Is there a way to set the default value in that version of React?
We are struggling to have a default value automatically set on page load for a RadioGroup. The documentation (https://material-ui./api/radio-group/) indicates that there is a defaultValue property, but it does not seem to take effect.
We played around with this in the Sandbox demo here and were unable to get it working: https://codesandbox.io/s/material-demo-8xgmd
The code taken from the Sandbox demo:
<FormControl ponent="fieldset" className={classes.formControl}>
<FormLabel ponent="legend">Gender</FormLabel>
<RadioGroup
aria-label="Gender"
name="gender1"
className={classes.group}
value={value}
onChange={handleChange}
defaultValue="male">
<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>
We played around with this code but were unable to get the "male" radio button to be selected on page load. Is there another property we can set for the default?
FOLLOW UP QUESTION: we are using React 16.2. Is there a way to set the default value in that version of React?
Share Improve this question edited May 24, 2019 at 23:11 Kon asked May 24, 2019 at 22:05 KonKon 211 gold badge1 silver badge4 bronze badges 4- You can just set the checked property to true for male and to false for female. – John Krakov Commented May 24, 2019 at 22:18
- @JohnKrakov - won't work for a nested React Component that is controlled through React rather than through DOM properties. – Randy Casburn Commented May 24, 2019 at 22:23
- value={value || 'male'} ? – sunn0 Commented Apr 14, 2021 at 21:15
- I have experienced many times with Mateiral UI things not working because of the intial render of a ponent contained a non valid value, ensure you never pass an undefined value to the RadioGroup field including before the user actually sees the ponent. – Mayer Spitz Commented Jul 27, 2021 at 5:13
1 Answer
Reset to default 0If using React Version that Supports Hooks (> 16.8) (given stackblitz in question)
You have to use the useState()
method the change the internal state of the React (Material Design) ponent. This tells MD RadioGroup ponent which radio button you want to be the default by creating a state property named value
which is set to male
. Then, the value
property is used as the value
attribute "value" - and that sets the default.
It is a simple change to line 24 of the sandbox referenced:
Change:
const [value, setValue] = React.useState("female");
To:
const [value, setValue] = React.useState("male");
If using React Version without Hooks (< 16.8)
You'll need to rewrite your function as a React Component Class using standard a state variable. Unfortunately, the version of Material Design is also an issue in this case since Material Design calls a React method that doesn't exist in the earlier version of React (createContext()
). Downgrade Material Design to v1.0.0 if you are not using React 16.8.
And relevant code:
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 ponent="fieldset" className={this.classes.formControl}>
<FormLabel ponent="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 ponent="fieldset" className={this.classes.formControl}>
<FormLabel ponent="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>
);
}
}
本文标签: javascriptSetting the default selected item in a RadioGroupStack Overflow
版权声明:本文标题:javascript - Setting the default selected item in a RadioGroup - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745451928a2658926.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论