【问题标题】:onClick not firing on React.js input radio buttononClick 未在 React.js 输入单选按钮上触发
【发布时间】:2017-10-10 03:50:11
【问题描述】:

移动onClick ={props.onPassFail} 会在移动到包装<Label> 时触发,但在附加到<Input> 控件时不会触发。我最终想触发 onChange 事件,但不明白为什么 Input 没有注册 onClick 或 onChange 事件。我遵循 Bootstrap 4.0.0-beta 所需的单选按钮约定。

如何将 onClick 和 onChange 直接附加到 <Input> 控件?

代码:

<div className="btn-group" data-toggle="buttons">
  <label className="btn btn-secondary passfail passfail-fail" onClick={props.onPassFail}>
    <input type="radio" name="passfail" id="option1" autoComplete="off" /> Fail
  </label>
  <label className="btn btn-secondary passfail passfail-pass" onClick={props.onPassFail}>
     <input type="radio" name="passfail" id="option2" autoComplete="off"  /> Pass
  </label>
</div>

【问题讨论】:

  • 通过点击输入,而不是标签
  • 错误是传递 onClick 到输入什么都不做。 @Amt Labib 的解决方案是使用 React 组件而不是无状态函数。

标签: reactjs dom dom-events


【解决方案1】:

您可以直接在输入控件上添加onClickonChange 检查下面的代码,它完全可以工作

onClick 和 onChange 的处理程序是添加到组件中的函数,在这些函数中,您可以调用任何作为 props 传递的处理程序

export default class Test extends Component {
    constructor(props) {
        super(props);
        this.clicked = this.clicked.bind(this);
        this.changed = this.changed.bind(this);
    }

    clicked(){
        console.log("clicked");
        //this.props.onPassFail();
    }

    changed(){
        console.log("changed");
        //this.props.onPassFail();
    }

    render() {
        const { handleSubmit  , error } = this.props
        return (
            <label>
                <input type="radio" onClick={this.clicked} onChange={this.changed} />
            </label>
        );
    }
}

【讨论】:

  • 我最初的问题并不清楚我试图在无状态函数中执行此操作,而不是反应组件。这可能吗?
猜你喜欢
  • 2023-03-09
  • 2017-06-08
  • 2022-08-18
  • 2020-05-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多