【问题标题】:Trying to add a radio button and only select one button at a time尝试添加一个单选按钮,一次只选择一个按钮
【发布时间】:2019-04-18 19:20:29
【问题描述】:

我正在尝试添加另一个单选按钮并让用户一次只选择一个。

我不想更改 _onChangeIsConfig。 我可以在我的代码中进行哪些更改以使按钮在不更改 _onChangeIsConfig 的情况下工作

_onChangeIsConfig(event){
      FirmwareUpgradeDialogActions.updateState('isConfig', event.target.checked);

    }

<FormControlLabel
    control={
       <Radio
       checked={this.state.isConfig === 'firmware-isconfig'}
       onChange={this._onChangeIsConfig}
       value="firmware-isconfig"
          />
         }
     label={this.context.intl.formatMessage({id: 'network.isconfig'})}
                                   />

    <FormControlLabel
         control={
            <Radio

          checked={this.state.isConfig === 'firmware-image-isconfig'}

           onChange={this._onChangeIsConfig}
           value="firmware-image-isconfig"
        />
    }

【问题讨论】:

  • 如果你想至少检查 1 个标签,你可以遵循这样的逻辑:如果 isConfig 为真,则检查第一个标签,否则检查第二个标签
  • 正如@Icepickle 已经提到的,如果不喜欢更新,你必须按照他的建议去做。但是如果你可以使用 name 和 value 道具,你会从 HTML 中免费获得单选按钮切换

标签: reactjs react-native react-redux


【解决方案1】:

好吧,既然你想要一个漂亮的二进制状态(如果你只保留一个布尔标志,你真的不能做更多),那么像这样改变你的 jsx

<FormControlLabel
    control={
       <Radio
           checked={!!this.state.isConfig}
           onChange={this._onChangeIsConfig}
           value="firmware-isconfig"
           />
    }
    label={this.context.intl.formatMessage({id: 'network.isconfig'})}
/>

<FormControlLabel
     control={
        <Radio
            checked={!this.state.isConfig}
            onChange={() => this._onChangeIsConfig( { target: { checked: false } } )}
            value="firmware-image-isconfig"
        />
     }
 />

这将使您始终选中 2 个无线电控件中的任何一个,之后您如何处理它将取决于您。但是,如果您不想更改状态更新方式,则不能再拥有了

【讨论】:

  • 这也有效,但它不允许我在按钮之间切换回来。我不想更改状态,因为它与所有其他文件相关联,我试图避免更改所有文件
  • 抱歉,我忘记了第二个的 onchange 事件,所以我现在只向你的旧方法发送一个假事件;)
猜你喜欢
  • 2012-04-23
  • 2017-06-28
  • 2016-01-09
  • 1970-01-01
  • 2011-08-13
  • 2013-07-20
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
相关资源
最近更新 更多