Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

react-radio-group

chenglou121.8kMIT3.0.3TypeScript support: definitely-typed

Better radio buttons.

facebook, react, radio, radio-group, component, react-component

readme

React-radio-group

npm install react-radio-group

Then 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 both, the RadioGroup and Radio component.).

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.

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 the Radio components 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 the RadioGroup
  • children: Node: define your Radios and any other components. Each Radio component (a thin wrapper around input) within a RadioGroup will have some fields like type, name and checked prefilled.

<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

License

MIT

changelog

3.0.3 (March 29th 2018)

  • React 16 support

3.0.0 (June 29th 2016)

  • Completely new API: no more function-as-a-child. See Readme for the details
  • No new DOM Nodes are created anymore when component gets rerendered.
  • Requires React v0.14 or higher
  • Both RadioGroup and Radio have a displayName

2.2.0 (November 30th 2015)

  • selectedValue and onChange are optional

2.1.1 (August 17th 2015)

  • Allow selectedValue's type to be a boolean.

2.1.0 (July 26th 2015)

  • Library now no longer wraps your children function return with a div. It now checks that you return a single component (or null) from the function. #18

2.0.2 (June 14th 2015)

  • Make the library work with browser globals.

2.0.1 (June 14th 2015)

  • Compile to UMD so you can import this hackily from a browser script.

2.0.0 (June 14th 2015)

  • API overhaul. See README for the new, cleaner API!
  • Drop Bower support.
  • Add npm support.

1.0.0

  • Initial release.