Multiple checkbox in redux-form

前端 未结 3 1126
攒了一身酷
攒了一身酷 2021-02-08 04:29

I would like to ask, here\'s the scenario. I have this multiple checkbox but my problem is whenever I tick one checkbox, all of the 4 checkboxes are selected. And also why is it

相关标签:
3条回答
  • 2021-02-08 04:40

    Please give different field names for each checkbox. (name="investor_stage").The problem is all the field names are same.

    0 讨论(0)
  • 2021-02-08 04:45

    For people like me who are new to redux and react may find the original code mentioned here confusing. I modified and converted it to an ES6 class. I also Removed bootstrap, validation and made it easy to debug.

    Here is the modified code

    import React from 'react';
    
    class CheckboxGroup extends React.Component {
    
        checkboxGroup() {
            let {label, required, options, input, meta} = this.props;
    
            return options.map((option, index) => {
                return (
                <div className="checkbox" key={index}>
                    <label>
                        <input type="checkbox"
                               name={`${input.name}[${index}]`}
                               value={option.name}
                               checked={input.value.indexOf(option.name) !== -1}
                               onChange={(event) => {
                                   const newValue = [...input.value];
                                   if (event.target.checked) {
                                       newValue.push(option.name);
                                   } else {
                                       newValue.splice(newValue.indexOf(option.name), 1);
                                   }
    
                                   return input.onChange(newValue);
                               }}/>
                        {option.name}
                    </label>
                </div>)
            });
        }
    
        render() {
            return (
                <div>
                    {this.checkboxGroup()}
                </div>
            )
        }
    }
    
    
    export default CheckboxGroup;
    

    Usage:

    let optionsList = [{id: 1, name: 'Optoin1'}, {id: 2, name: 'Option 2'}, {id: 3, name: 'Option 3'}]     
    <Field name="roles" component={CheckboxGroup} options={optionsList} /> 
    
    0 讨论(0)
  • 2021-02-08 04:54

    Adding some style to @Aftab Naveed I wrapped my checkboxes in a label with these classnames instead and they ended up real pretty and easier clicked:

    <label key={option.name} className="form-check-label" style={ {"fontSize": "1.5em"} }>
              <input ... />
                <span>{option.name}</span>
              </label>
    

    i did not use bootstrap, i think its a redux form thing with className "form-check-label"

    0 讨论(0)
提交回复
热议问题