DEV Community

Osika Martha
Osika Martha

Posted on

Context API

User interfaces are created using the well-known JavaScript framework React. It is renowned for handling complicated application state changes and for efficiently rendering components. Managing a React application's state, on the other hand, gets harder as the application's size and complexity increase. To solve this problem, React released the Context API, a state management mechanism that can be used to share states between components.

The Context API enables programmers to construct a global state that can be accessed and modified by any component in the application without having to provide props through intermediary components. By passing a prop via numerous levels of components, the issue of prop drilling is reduced, which makes the code more complex and challenging to maintain.

A context must first be created before the Context API can be used in a React application. The createContext() method offered by the React package can be used to accomplish this.
An initial value, which is used as the context's default value, is sent as input to the createContext() method. As an illustration, the following code establishes the context for a theme:

import React from 'react';

const ThemeContext = React.createContext('light');

export default ThemeContext;

Enter fullscreen mode Exit fullscreen mode

In this example, the initial value for the theme context is 'light'. You can use this context to provide the theme to any component in your application.

To provide the context to a component, you can use the Provider component. The Provider component takes the context as a prop and wraps the child components that need access to the context. For example:

import React from 'react';
import ThemeContext from './ThemeContext';
import Header from './Header';
import Footer from './Footer';

function App() {
  return (
    <ThemeContext.Provider value="dark">
      <Header />
      <main>
        <p>This is the main content of the page.</p>
      </main>
      <Footer />
    </ThemeContext.Provider>
  );
}

export default App;

Enter fullscreen mode Exit fullscreen mode

In this example, the App component provides the theme context to the Header and Footer components. The value of the theme is set to 'dark', which overrides the default value of 'light'.

To consume the context in a component, you can use the useContext() hook provided by React. The useContext() hook takes the context as an argument and returns the current value of the context. For example:

import React, { useContext } from 'react';
import ThemeContext from './ThemeContext';

function Header() {
  const theme = useContext(ThemeContext);
  return (
    <header style={{ background: theme === 'dark' ? '#333' : '#eee' }}>
      <h1>My App</h1>
    </header>
  );
}

export default Header;

Enter fullscreen mode Exit fullscreen mode

In this illustration, the header is styled in accordance with the current theme using the theme context that the Header component consumes.

To sum up, the Context API is an effective tool for controlling the global state in a React application. You may transfer state among components without the use of prop drilling by building a context and utilizing the Provider component. Any component can consume the context and update the state as necessary by using the useContext() hook. Building scalable and effective React apps is made possible through the Context API.

Top comments (0)