Clue Mediator

useReducer in React Hook

📅December 28, 2020

Today we will show you how to use useReducer in React Hook. useReducer is a hook that is used for state management in React. The useState is built using the useReducer. So use it when you have a complex state logic that contains multiple sub values.

Syntax

Use the following syntax for useReducer hook.

const [state, dispatch] = useReducer(reducer, initialState);

Generally, the useReducer hook will accept the two parameters such as reducer method and the initial state.

It will return the two arguments in the form of an Array. The first argument of the array will provide the value of the state variable and the second argument will be the `dispatch` method that is used to update the state.

Example of the useReducer Hook

  1. Create a react application
  2. Design a page in the react component
  3. Use the useReducer hook
  4. Output

In this example, we will create a counter example using the useReducer where we will increment and decrement the count value by clicking on the buttons.

1. Create a react application

Here, we will create a startup react application using `create-react-app`. Run the following command to create a react app.

npx create-react-app usereducer-react-hook

2. Design a page in the react component

Let’s design a page in the react component to show the counter value and add the three different buttons called `Increment`, `Decrement`, and `Reset`. On click of the button, we will change the value of the counter.

App.js

import React from "react";

function App() {
  return (
    <div class="App">
      <h3>useReducer in React Hook - <a href="https://www.cluemediator.com" target="_blank" rel="noopener noreferrer">Clue Mediator</a></h3>
      <span>Counter: {0}</span>
      <button>Increment</button>
      <button>Decrement</button>
      <button>Reset</button>
    </div>
  );
}

export default App;

3. Use the useReducer hook

Now use the useReducer hook in the example. We will create a separate function to manage the state based on the action that is provided in the argument.

We will use the following function and the state variable.

const initialState = 0;

const reducer = (state, action) => {
  switch (action) {
    case 'increment':
      return state + 1;
    case 'decrement':
      return state - 1;
    case 'reset':
      return initialState;
    default:
      return state;
  }
}

Let’s use the above function in the react component.

App.js

import React, { useReducer } from "react";

const initialState = 0;

const reducer = (state, action) => {
  switch (action) {
    case 'increment':
      return state + 1;
    case 'decrement':
      return state - 1;
    case 'reset':
      return initialState;
    default:
      return state;
  }
}

function App() {
  const [count, dispatch] = useReducer(reducer, initialState);

  return (
    <div class="App">
      <h3>useReducer in React Hook - <a href="https://www.cluemediator.com" target="_blank" rel="noopener noreferrer">Clue Mediator</a></h3>
      <span>Counter: {count}</span>
      <button onclick="{()" ==""> dispatch('increment')}>Increment</button>
      <button onclick="{()" ==""> dispatch('decrement')}>Decrement</button>
      <button onclick="{()" ==""> dispatch('reset')}>Reset</button>
    </div>
  );
}

export default App;

4. Output

Run the react application and check the output in the browser.

Output - useReducer in React Hook - Clue Mediator

Output - useReducer in React Hook - Clue Mediator

That’s it for today.
Thank you for reading. Happy Coding..!! 🙂

Demo & Source Code

Github Repository StackBlitz Project