In this article I am going to discuss about the useReducer react hook in detail but before that if you have not read the useState hook in react then must read it. The useReducer hook is a powerful alternative to the useState hook when managing complex state logic. useReducer is very useful when the state transitions depend on the previous state or when the next state is determined by an action. In simple words we can say that useReducer is a React Hook that lets you add a reducer to your component.

When to use the useReducer hook?

The useReducer hook is especially beneficial when dealing with more complex state management, such as handling multiple related values or implementing undo/redo functionality. It can help organize and centralize state logic in a way that is easier to reason about and maintain. If you not using the useReducer hook then may be you have to make multiple states to manage the functionality but with the useReducer hook you can manage multiple functionalities into one state.

How to use?

The useReducer hook is very simple to use. Let see a simple example to how we can use this hook

import React, { useReducer } from 'react';

// Reducer function
const reducer = (state, action) => {
  switch (action.type) {
    case 'INCREMENT':
      return { count: state.count + 1 };
    case 'DECREMENT':
      return { count: state.count - 1 };
    case 'RESET':
      return { count: 0 };
      return state;

const Counter = () => {
  // useReducer returns the current state and a dispatch function
  const [state, dispatch] = useReducer(reducer, { count: 0 });

  return (
      <p>Count: {state.count}</p>
      <button onClick={() => dispatch({ type: 'INCREMENT' })}>Increment</button>
      <button onClick={() => dispatch({ type: 'DECREMENT' })}>Decrement</button>
      <button onClick={() => dispatch({ type: 'RESET' })}>Reset</button>

export default Counter;

In above example reducer is a function that takes the current state and an action, and returns the new state based on that action. useReducer(reducer, initialState) is called to create the state and dispatch function. It takes the reducer function and an initial state as arguments, returning the current state and a dispatch function. We can also use the useReducer hook to optimize our code. For e.g if you want to make a functionality of increment/decrement like in above program then you have to maintain atleast two states but with the useReducer you can do with only one that will help in optimization of code.


Now we are at the end of react hook tutorials only few hooks like useRef hook and useId is remaining which is not much use in react components. If you want to know more about the useReducer then you can follow react documentation. In my next article I am going to discuss about useRef and useId hook.