recoil-group
Manage your atoms as group
Manage your states as group of atoms, not seperated ones.
Features
- Type-safe
- Fully customizable (key, defaultValue)
- Provides the 'all-in-one' group object (Optional)
- Supports recoil-nexus
Example
import { createRecoilGroup } from 'recoil-group'
const defaultValue = {
left: 0,
right: 1,
}
export const {
useGroupValue: useCounterGroupValue,
useGroupItemState: useCounterGroupItemState,
useGroupItemValue: useCounterGroupItemValue,
useSetGroupItemState: useSetGroupItemState,
} = createRecoilGroup<typeof defaultValue>({
groupKey: 'counter-group',
groupDefaultProvider: defaultValue,
groupItemDefaultProvider(key) {
return defaultValue[key]
},
})
// ...
function CounterLeft({ type }: { type: 'left' | 'right' }) {
const [counter, setCounter] = useCounterGroupItemState(type)
return (
<button type='button' onClick={() => setCounter((count) => count + 1)}>
{type} count is: {counter}
</button>
)
}
License
MIT