使用 ReactJS 处理多个复选框值

IT技术 reactjs
2021-05-10 03:10:06

我正在尝试学习 ReactJS 并创建一个小杂务列表,其中添加了杂务的名称和应完成杂务的日期。

但是我无法弄清楚在处理表单提交时如何获取已选中复选框的数组。

我想要的是在我的 newChore.handleSubmit 中有一个包含所有检查值的数组。

var NewChore = React.createClass({
    handleSubmit: function (e) {
        e.preventDefault();
        var name = this.refs.name.value;
        console.log(this.refs.test);
    },
    render: function () {
        return (
            <form className="ChoreForm" onSubmit={this.handleSubmit}>
                <div>
                    <label htmlFor="name">Naam</label>
                    <input type="text" ref="name" id="name" />
                </div>
                <div>
                    <Day number="1" name="Monday" ref="test" />
                    <Day number="2" name="Tuesday" ref="test" />
                </div>
                <input type="submit" value="Opslaan" />
            </form>
        );
    }
});

var Day = React.createClass({
    render: function () {
        return (<div>
            <input type="checkbox" onChange={this.handleChange} ref="day_number" id="day_{this.props.number}" /><label htmlFor="day_{this.props.number}">{this.props.name}</label>
        </div>);
    }
});
1个回答

您也可以在 props 中传递函数,就像您必须在父组件中声明句柄更改函数一样:

var NewChore = React.createClass({
  handleSubmit: function (e) {
    e.preventDefault();
    var name = this.refs.name.value;
    console.log(this.refs.test);
  },
  handleChange: function (e) {
  },
  render: function () {
    return (
      <form className="ChoreForm" onSubmit={this.handleSubmit}>
        <div>
          <label htmlFor="name">Naam</label>
          <input type="text" ref="name" id="name" />
        </div>
        <div>
          <Day number="1" name="Monday" ref="test" onHandleChange={this.handleChange} />
          <Day number="2" name="Tuesday" ref="test" onHandleChange={this.handleChange} />
        </div>
        <input type="submit" value="Opslaan" />
      </form>
    );
  }
});

并将此函数传递给您的子组件,例如

<Day number="1" name="Monday" ref="test" onHandleChange={this.handleChange}/>

并用于您的子组件

var Day = React.createClass({
  render: function () {
    return (<div>
        <input type="checkbox" onChange={this.props.onHandleChange} ref="day_number" id="day_{this.props.number}" /><label htmlFor="day_{this.props.number}">{this.props.name}</label>
    </div>);
  }
});