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 the value of checkbox is just true or false.Here's my checkbox:
<div className="checkbox">
<label><Field name="investor_stage" component="input" type="checkbox" value="Seed" /> Seed</label>
</div>
<div className="checkbox">
<label><Field name="investor_stage" component="input" type="checkbox" value="Early Stages" /> Early Stages</label>
</div>
<div className="checkbox">
<label><Field name="investor_stage" component="input" type="checkbox" value="Formative Stages" /> Formative Stages</label>
</div>
<div className="checkbox">
<label><Field name="investor_stage" component="input" type="checkbox" value=" Later Stages" /> Later Stages</label>
</div>
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} />
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"
来源:https://stackoverflow.com/questions/42836060/multiple-checkbox-in-redux-form