【问题标题】:Multiple checkbox values handling with ReactJS使用 ReactJS 处理多个复选框值
【发布时间】:2017-08-30 13:17:14
【问题描述】:

我正在尝试学习 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>);
    }
});

【问题讨论】:

    标签: reactjs


    【解决方案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>);
      }
    });
    

    【讨论】:

    • 我认为这是肯定的。我应该在我的数据中保留一个数组,其中包含被选中/未选中的内容等,对吗?不过,对于这样一个简单的复选框列表,似乎有点矫枉过正。 P.S:不要忘记将属性添加到 的 onchange 属性
    • 是的,您必须维护选中和未选中的元素
    猜你喜欢
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 2019-04-14
    • 2017-12-08
    • 2016-12-30
    • 2019-02-13
    • 2019-08-16
    • 1970-01-01
    相关资源
    最近更新 更多