React State Management

Learn how Context API and Redux Toolkit manage shared state in React applications.

State Management (Context API & Redux Toolkit)

As React applications grow, managing data becomes more challenging. A small application may only have a few components, but a large application can contain hundreds of components that need to share the same information.

For example, an online shopping website needs to share the shopping cart, user login details, and selected language across many different pages.

Passing data from one component to another through multiple levels of components can make the code difficult to manage. This problem is solved with state management.

In React, two popular state management solutions are Context API and Redux Toolkit.

What is State Management?

State management is the process of storing, updating, and sharing data across different components in an application.

Instead of keeping separate copies of the same information, state management provides a central way to access and update shared data.

Why Do We Need State Management?

As applications become larger, many components may need the same information.

Examples include:

  • Logged-in user details
  • Shopping cart items
  • Website theme (Light/Dark Mode)
  • Language settings
  • Notifications
  • Favorite products

Without proper state management, developers would have to pass data through many components using props, a process known as prop drilling.

State management helps avoid this problem.

What is the Context API?

The Context API is a built-in React feature that allows multiple components to share data without passing props through every level.

It is ideal for sharing data that many components need but does not change frequently.

Common use cases include:

  • User information
  • Theme settings
  • Language preferences
  • Authentication status

Basic Context API Example

First, create a context.

JavaScript
import { createContext } from "react";

const UserContext = createContext();

export default UserContext;

Next, provide the data.

JavaScript
<UserContext.Provider value="John">
  <App />
</UserContext.Provider>

Finally, use the data.

JavaScript
import { useContext } from "react";

const user = useContext(UserContext);

return <h2>{user}</h2>;

Explanation

  • createContext() creates a shared data container.
  • Provider makes the data available.
  • useContext() allows any child component to access the shared data.

Advantages of Context API

The Context API offers several benefits:

  • Built into React
  • No additional installation
  • Reduces prop drilling
  • Easy to use
  • Suitable for small and medium applications

However, for very large applications with complex state, developers often use Redux Toolkit.

What is Redux Toolkit?

Redux Toolkit is the recommended way to use Redux in modern React applications.

It provides a central store where application data is stored and managed.

Instead of each component managing its own copy of the data, every component can read from and update the same store.

Redux Toolkit simplifies many of the complex steps that older versions of Redux required.

Installing Redux Toolkit

Install Redux Toolkit using npm.

Terminal
npm install @reduxjs/toolkit react-redux

Basic Redux Toolkit Example

Create a simple slice.

JavaScript
import { createSlice } from "@reduxjs/toolkit";

const counterSlice = createSlice({
  name: "counter",
  initialState: { value: 0 },
  reducers: {
    increment(state) {
      state.value++;
    }
  }
});

export const { increment } =
  counterSlice.actions;

This slice manages a counter that can be shared across the application.

Context API vs Redux Toolkit

devbrainbox.local/output
Feature                 Context API   Redux Toolkit
Built into React        Yes           No
Installation required   No            Yes
Easy to learn           Yes           Moderate
Best for small projects Yes           Moderate
Best for large projects Moderate      Yes
Handles complex state   Limited       Excellent

Both tools solve the same problem but are designed for different project sizes.

When Should You Use Each One?

Use Context API When:

  • Sharing user information
  • Managing themes
  • Handling language settings
  • Working on small or medium projects

Use Redux Toolkit When:

  • Building large applications
  • Managing shopping carts
  • Handling complex business logic
  • Managing many different types of shared data

Choosing the right tool depends on the size and complexity of your application.

Best Practices

When managing state:

  • Keep local data in component state.
  • Use Context API for simple shared data.
  • Use Redux Toolkit for large applications.
  • Avoid unnecessary global state.
  • Organize your state clearly.
  • Give slices and contexts meaningful names.

Following these practices keeps your application easier to understand and maintain.