Skip to main content
Module

x/jotai/docs/utilities/reducer.mdx

👻 Primitive and flexible state management for React
Go to Latest
File
---title: Reducernav: 3.99keywords: reducer,action,dispatchpublished: false---
## atomWithReducer
Ref: https://github.com/pmndrs/jotai/issues/38
```jsimport { atomWithReducer } from 'jotai/utils'
const countReducer = (prev, action) => { if (action.type === 'inc') return prev + 1 if (action.type === 'dec') return prev - 1 throw new Error('unknown action type')}
const countReducerAtom = atomWithReducer(0, countReducer)```
<CodeSandbox id="g3tsx" />## useReducerAtom
```jsximport { atom } from 'jotai'import { useReducerAtom } from 'jotai/utils'
const countReducer = (prev, action) => { if (action.type === 'inc') return prev + 1 if (action.type === 'dec') return prev - 1 throw new Error('unknown action type')}
const countAtom = atom(0)
const Counter = () => { const [count, dispatch] = useReducerAtom(countAtom, countReducer) return ( <div> {count} <button onClick={() => dispatch({ type: 'inc' })}>+1</button> <button onClick={() => dispatch({ type: 'dec' })}>-1</button> </div> )}```
<CodeSandbox id="eg0mw" />