react-checkbox-group
Version:
Sensible checkbox groups manipulation for DOM.
97 lines (76 loc) • 2 kB
Markdown
//badges.greenkeeper.io/ziad-saab/react-checkbox-group.svg)](https://greenkeeper.io/)
[](https://travis-ci.org/ziad-saab/react-checkbox-group)
This is your average checkbox group:
```html
<form>
<input
onChange="{handleFruitChange}"
type="checkbox"
name="fruit"
value="apple"
/>Apple
<input
onChange="{handleFruitChange}"
type="checkbox"
name="fruit"
value="orange"
/>Orange
<input
onChange="{handleFruitChange}"
type="checkbox"
name="fruit"
value="watermelon"
/>Watermelon
</form>
```
Repetitive, hard to manipulate and easily desynchronized.
Lift up `name` and `onChange`, and give the group an initial checked values array.
See below for a [complete example](
```sh
npm install react-checkbox-group
```
or
```sh
yarn add react-checkbox-group
```
Simply require/import it to use it:
```tsx
import CheckboxGroup from 'react-checkbox-group'
```
```tsx
import React, { useState, useEffect } from 'react'
import CheckboxGroup from 'react-checkbox-group'
const Demo = () => {
// Initialize the checked values
const [fruits, setFruits] = useState<string[]>(['apple', 'watermelon'])
useEffect(() => {
const timer = setTimeout(() => {
setFruits(['apple', 'orange'])
}, 5000)
return () => clearTimeout(timer)
}, [])
return (
<CheckboxGroup name="fruits" value={fruits} onChange={setFruits}>
{(Checkbox) => (
<>
<label>
<Checkbox value="apple" /> Apple
</label>
<label>
<Checkbox value="orange" /> Orange
</label>
<label>
<Checkbox value="watermelon" /> Watermelon
</label>
</>
)}
</CheckboxGroup>
)
}
ReactDOM.render(<Demo />, document.body)
```
MIT.
[![Greenkeeper badge](https: