react-custom-radio v1.0.7
React-custom-radio
This is fork of this awesome repository.
npm install react-custom-radio --saveThen either import {RadioGroup, Radio} from 'react-radio-group' or add node_modules/react-radio-group/umd/index.js into your HTML file (exports the RadioGroup global which contains: RadioGroup, Radio and RadioButton components.).
What This Solves
This is your average radio buttons group:
<form>
<input type="radio" name="fruit" value="apple" />Apple
<input type="radio" name="fruit" value="orange" />Orange
<input type="radio" name="fruit" value="watermelon" />Watermelon
</form>A few problems:
- Repetitive fields (
name,type,checked,onChange). - Hard to set the checked value. You need to put e.g.
checked={'apple' === this.state.selectedFruitName}on every input. - Hard to retrieve the selected value.
Here's a better version (full example here)
<RadioGroup name="fruit" selectedValue={this.state.selectedValue} onChange={this.handleChange}>
<Radio value="apple" />Apple
<Radio value="orange" />Orange
<Radio value="watermelon" />Watermelon
</RadioGroup>Repetitive fields are either lifted onto the RadioGroup wrapper or already implicitly set on the Radio component, which is a simple wrapper around the radio input.
Customize your radio with \ elements
This library also provide simple interface to customize your buttons with:
<RadioGroup
name="car"
selectedValue={this.state.selectedCar}
onChange={this.handleCarChange}
>
<RadioButton value="BMW" className="radio-button">
BMW
</RadioButton>
<RadioButton value="Mercedes" className="radio-button">
Mercedes-Benz
</RadioButton>
<RadioButton value="Porsche" className="radio-button">
Porsche
</RadioButton>
</RadioGroup>This example will create few <button> elements and all of them will work as default radio elements.
If you want to use <input> elements both with <button> you will need to provide useHiddenInput to RadioButton component.
For details see example
Formal API
<RadioGroup />
Exposes 5 optional props:
name: String: what you'd normally put on the radio inputs themselves.selectedValue: String | Number | Boolean: the currently selected value. This will be used to compare against the values on theRadiocomponents to select the right one.onChange: Function: will be passed the newly selected value.Component: String | React Component: defaults to"div", defines what tag or component is used for rendering theRadioGroupchildren: Node: define yourRadios and any other components. EachRadiocomponent (a thin wrapper aroundinput) within aRadioGroupwill have some fields liketype,nameandcheckedprefilled.
<Radio />
Any prop you pass onto it will be transferred to the actual input under the hood. Radio components cannot be used outside a RadioGroup
<RadioButton />
Exposes 3 optional props:
useHiddenInput: Boolean: if you need to use inputclassName: String: base class name for button. If current button is activeactiveclass will be added to value of this prop (default - empty)type: type of button element. Default -button
Any other prop you pass onto it will be transferred to actualbuttonunder the hood.RadioButtoncomponents cannot be used outside aRadioGroup.