reduxform-如何使用单个handleChange函数处理单选按钮上的更改

时间:2018-12-14 11:03:08

标签: reactjs redux-form

我在Laravel项目(实现React 15.4.2)中使用redux-form,而我拥有的表单包括几个单选按钮。我需要一个handleChange函数,以便这些函数记住检查的内容(如果它们是从先前的值更改或是第一次选择),但是我不想为每个无线电单独编写一个函数按钮,或者实施一套庞大的规则来处理每个规则。

这是我的一个字段(只是'yes'值):

<input type="radio" onChange={this.handleChange.bind(this, 'maintain_licence', 'yes')} checked={maintain_licence.value === 'yes'} id="maintain-licence-yes" value="yes" name="maintain_licence" /><span>Yes</span>

基于对maintain_licence的单选按钮进行交互,这就是我对单个单选按钮所做的更改:

handleChange(fieldName, value) {
    if(fieldName === 'maintain_licence') {
        this.props.fields.maintain_licence.onChange(value);
    }
}

这很好用-但是,因为我的表格中有大约20个无线电,所以我可以想象这个功能会变得很长。理想情况下,我想要类似的东西:

handleChange(fieldName, value) {
   this.props.fields.fieldName.onChange(value);
}

但是在尝试查找实际上名为“ fieldName”的字段时,它引发了一个错误,指出它无法对未定义的值运行onChange

基本上,我只需要找到一种方法来使用单个功能来处理所有单选按钮上的更改,但是我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

您可以使用属性访问器来获取所需的属性。像这样:

    //create server using given threadpool
    Server server = new Server(8080);

    GzipHandler gzipHandler = new GzipHandler();
    gzipHandler.setIncludedMethods("PUT", "POST", "GET");
    gzipHandler.setInflateBufferSize(2048);
    gzipHandler.setHandler(handler);
    server.setHandler(gzipHandler);

    server.start();
    server.join();

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors