如何使用 React 只选择一个单选按钮

Posted

技术标签:

【中文标题】如何使用 React 只选择一个单选按钮【英文标题】:How to keep only one radio button selected with React 【发布时间】:2015-08-30 03:20:39 【问题描述】:

我正在尝试通过用它做一个小应用程序来学习 React。我的应用程序有两个单选按钮,我想始终只选中其中一个,但似乎无法弄清楚当我选择另一个按钮时如何取消选中另一个按钮。相反,它们都保持选中状态。这是一个 jsfiddle:

https://jsfiddle.net/4us5us2o/

这里是代码:

var MyRadioButton = React.createClass(
  handleChange: function () 
    this.props.onChange(this.props.myValue)
  ,
  render: function () 
    return (
      <input type="radio" onChange=this.handleChange>this.props.myValue</input>
    )
  
);


var MyApp = React.createClass(
  getInitialState: function () 
    return 
      selectedValue: ''
    
  ,
  changeValue: function (newValue) 
    this.setState(selectedValue: newValue )
  ,
  render: function () 
    return (
      <div>
        <MyRadioButton onChange=this.changeValue myValue="A" />
        <MyRadioButton onChange=this.changeValue myValue="B" /><br></br>
      </div>
    )
  
);

【问题讨论】:

【参考方案1】:

添加属性checked 并在那里进行比较。

例如:checked=this.state.myValue === true

我会给你一个工作示例,两个单选按钮控制true/false之间的值。

https://jsfiddle.net/4hs7v5qb/1/

【讨论】:

这是实现解决方案的最简单方法。【参考方案2】:

只是调整乍得的答案,以防万一有人遇到这个问题。

<input type="radio" name="myGroupName" onChange=this.handleChange/>
<span>this.props.myValue</span>

不要向输入元素添加任何子元素,因为 React 会抛出错误。只需在其旁边使用跨度或标签即可显示文本。

【讨论】:

【参考方案3】:

您需要在输入元素上提供名称属性,以将它们标记为同一个单选按钮组的一部分。这是具有无线电类型的 <input> 元素的标准行为。

在您的示例中,您可以使用:

<input type="radio" name="myGroupName" onChange=this.handleChange>this.props.myValue</input>

【讨论】:

以上是关于如何使用 React 只选择一个单选按钮的主要内容,如果未能解决你的问题,请参考以下文章

当数据来自数据库时,如何一次只选择一个单选按钮并在javascript中取消选择其他单选按钮?

如何在 tkinter 中只选择一个单选按钮

如何在 Flutter 中只选择一组单选按钮的值?

只允许在使用 PHP 的表单中选择一个单选按钮

React 中的单选按钮选择

在会话中存储单选按钮值 - PHP