javascript - React 单选按钮 onChange 事件不会在单选按钮的第一次更改时绑定(bind)

标签 javascript reactjs radio-button

我正在使用 React js,在单选按钮 onChange 事件绑定(bind)上发现了一个奇怪的问题。 我的页面在单击按钮时打开一个弹出窗口,其中一个新组件绑定(bind)在该弹出窗口中。在这个新组件中,我创建了 2 个 radio buttons 并在更改该单选按钮时隐藏/显示 div。下面是我的代码。

 class component1 extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      showComponent: true
   };
  }
  handleChange = () => {
    this.setState({
      showComponent: !this.state.showComponent,
    });
  }
  render() {
   return(
   <div>
    <input type='radio' name='a' onChange={self.handleChange} defaultChecked/>
    <input type='radio' name='a' onChange={self.handleChange}/>
     {this.state.showComponent && (<div>Hide or show based on state change</div>)}
   </div>
  );
 }
}

当我第一次打开弹出窗口时,它工作正常。提交表单和弹出窗口关闭后,它的行为可能会发生变化。下次我在没有父页面刷新的情况下打开弹出窗口时,在第一次更改单选按钮时它不会调用 handleChange 函数。从第二次点击开始,它就可以正常工作。

我认为,onSubmit 我在成功提交表单时调用了 form.reset() 函数,这会产生问题。但我不明白如何解决这个问题。

最佳答案

<input type='radio' name='a' onChange={this.handleChange} checked={!this.state.showComponent} />
<input type='radio' name='a' onChange={this.handleChange} checked={this.state.showComponent}/>

这将以一种受控的方式工作,而不是依赖于事件和 defaultChecked

https://codesandbox.io/s/5z40rj836l

关于javascript - React 单选按钮 onChange 事件不会在单选按钮的第一次更改时绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53122280/

相关文章:

javascript - 删除逻辑父级时,叠加触发器中的 React Bootstrap Popover 不会消失

javascript - react 嵌套的动态表单

javascript - 单选按钮单击删除错误消息jQuery

javascript - 单选按钮保存第一次单击的值,而不更改为第二次/最后一次单击的值

javascript - 根据用户选择启用和禁用单选按钮

javascript - 使用 JSLINQ 是否有任何性能成本

javascript - 谷歌地图上的明确指示

javascript - onclick 函数有时不会触发它的事件

javascript - 无法定位之后创建的 li 内的复选框

javascript - React Semantic UI - 在下拉菜单中添加选项键