useState — simple state. useReducer — complex state.
useState:
1const [count, setCount] = useState(0);
useReducer:
1const [state, dispatch] = useReducer(reducer, initialState);23function reducer(state, action) {4 switch (action.type) {5 case "increment":6 return { count: state.count + 1 };7 case "decrement":8 return { count: state.count - 1 };9 default:10 return state;11 }12}
When to use: