在一个表单中,我有一个带有两个受控输入的简单单选按钮组。默认情况下,通过将“已接受”的默认状态设置为“ false”,将选中“否”选项。这可行,但是我遇到的问题是选择“是”选项时,单击单选按钮时不会显示为选中状态。我必须再次单击它才能被选中。
在Chrome中使用反应检查器将检查的道具实际设置为true。
希望我的问题有道理。
注意:我发现了其他类似问题的帖子,解决方案是在onChange函数中删除preventDefault,但我没有。
我的jsx渲染方法:
<label><input type="radio" name="Accepted" value="true" onChange={this.onChange} checked={this.state.Accepted === "true"} /> Yes</label>
<label><input type="radio" name="Accepted" value="false" onChange={this.onChange} checked={this.state.Accepted === "false"} />No</label>
onChange函数如下所示:
onChange = (e) => {
this.setState({
[e.target.name]: e.target.value
})
}
将状态初始化为类似这样的构造函数:
constructor(props) {
super(props)
this.state = {
Accepted: false,
}
}