【问题标题】:Radio button selection to change state单选按钮选择以更改状态
【发布时间】:2016-04-01 09:08:24
【问题描述】:

如何设置input type="radio" 以便状态值会根据用户选择而改变?

在这种情况下,我希望按钮 name="1" 成为默认选择按钮,但如果用户选择按钮 name="2",则某些状态值应该改变。

<div data-toggle="buttons">
  <label>
    <input type="radio" name="1" defaultChecked onChange={this.handleRadioButton}>Option 1</input>
  </label>
  <label>
    <input type="radio" name="2" onChange={this.handleRadioButton}>Option 2</input>
  </label>
</div>

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    您的handleRadioButton 需要被告知点击了哪个按钮。我建议一个简单的函数参数。即

    onChange={() =&gt; this.handleRadioButton(1)}

    onChange={() =&gt; this.handleRadioButton(2)}

    您的函数可能如下所示:

    handleRadioButton(value) {
      this.setState({
        value: value
      });
    }
    

    最后,检查状态必须从该状态值中读取。即

    checked={this.state.value === 1}

    所以把它们放在一起......

    <input type="radio" checked={this.state.value === 1} onChange={() => this.handleRadioButton(1)} />

    <input type="radio" checked={this.state.value === 2} onChange={() => this.handleRadioButton(2)} />

    还有几件事:

    • 不要打扰defaultChecked 属性。只需将 value: 1 设置为初始状态即可。
    • 不需要像name 和value 这样的HTML 属性。在 React 中,HTML 逻辑被 JavaScript 逻辑所取代。 (警告:除非您提供服务器呈现的非 JS 后备。)

    【讨论】:

    • 有机会尝试一下,不幸的是,handleRadioButton 函数永远不会被调用。 (我添加了一个 console.log 来仔细检查)知道可能出了什么问题吗?
    • 我得看看你是如何定义你的组件的。请创建一个显示代码的新帖子。
    • 谢谢。我已经在这里发布了stackoverflow.com/questions/36348461/…
    • 今天救了我!谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 2021-04-09
    相关资源
    最近更新 更多