Radio Input onChange只发射一次?

ben*_*zen 9 javascript reactjs

我有一个我想要完成的简单任务:只要在其组之间切换单选按钮就触发一个函数.

class App extends Component {
    onButtonClick() {
        console.log('something was clicked!')
    }

    return (
      <div>
        <button onClick={this.onButtonClick.bind(this)}>
            Click me
        </button>
        <input
            type="checkbox"
            onChange={this.onButtonClick.bind(this)}
        />
        <input
            type="radio"
            value="yes"
            name="answer"
            onChange={this.onButtonClick.bind(this)}
        />
        <input
            type="radio"
            value="no"
            name="answer"
            onChange={this.onButtonClick.bind(this)}
        />
      </div>
    )
}
Run Code Online (Sandbox Code Playgroud)

按钮和复选框工作得很好.如果单击它,它会多次触发该函数.单选按钮会触发一次,然后停止.

这几乎就像ReactJS由于某种原因停止观看onChange的单选按钮一样.任何帮助将不胜感激.谢谢!

UPDATE

它似乎在https://codesandbox.io/s/rGMGzJNL中正常工作,但在我的本地环境中无法正常工作,这是完全令人困惑的.如果我弄清楚发生了什么会更新,但如果有人遇到过这个问题,我会很感激!

Dre*_*ams 13

您需要在每个无线电上设置checked属性并将状态保存为无线电状态.

class App extends Component {
  state = {
    radio: 'yes',
  }

  onButtonClick() {
    console.log("something was clicked!");
  }

  onRadioChange(value) {
    console.log("radio change");
    this.setState({
      radio: value,
    })
  }

  render() {
    return (
      <div>
        <button onClick={() => this.onButtonClick()}>
          Click me
        </button>
        <input type="checkbox" onClick={() => this.onButtonClick()} />
        <input
          type="radio"
          value="yes"
          name="answer"
          checked={this.state.radio === 'yes'}
          onChange={(e) => this.onRadioChange('yes')}
        />
        <input
          type="radio"
          value="no"
          name="answer"
          checked={this.state.radio === 'no'}
          onChange={(e) => this.onRadioChange('no')}
        />
      </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)