React useContext

Share data without passing props through every level.

✍️ 3 exercises + code challenge in this lesson

Context shares values (theme, logged-in user, language) with any component in the tree, without "prop drilling".

  1. Create it: const ThemeContext = createContext("light");
  2. Provide a value: <ThemeContext.Provider value={theme}>...</ThemeContext.Provider>
  3. Read it anywhere below: const theme = useContext(ThemeContext);

Key Takeaways: React useContext

Mastering React useContext helps you write clean and reliable React code. Follow standard conventions, test edge cases, and keep logic simple. Try running the code example below and complete the exercises to build confidence.

React useContext Code Example

React
<div id="root"></div>
<script src="https://unpkg.com/react@18.3.1/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone@7.25.6/babel.min.js"></script>

<script type="text/babel">
const { useState, useEffect, useRef, useMemo, createContext, useContext } = React;
const UserContext = createContext(null);

function Navbar() {
  const user = useContext(UserContext);
  return <nav style={{ background: "#071A2F", color: "white", padding: 10 }}>Signed in as {user.name}</nav>;
}

function Profile() {
  const user = useContext(UserContext);
  return <p>{user.name} has completed {user.lessons} lessons.</p>;
}

function App() {
  const [user, setUser] = useState({ name: "Ayesha", lessons: 7 });
  return (
    <UserContext.Provider value={user}>
      <Navbar />
      <Profile />
      <button onClick={() => setUser({ ...user, lessons: user.lessons + 1 })}>Complete a lesson</button>
    </UserContext.Provider>
  );
}

ReactDOM.createRoot(document.getElementById("root")).render(<App />);
</script>
Free sign-in required · Google login available

React useContext Practice Exercises

Check what you learned in “React useContext”.

/ 3 solved
Fill in the blank

Read a context value.

const theme = (ThemeContext);
✓ Correct! Not quite. Try again.
Multiple choice

What problem does Context solve?

✓ Correct! Not quite. Try again.
Code challenge

Provide ThemeContext with the value "dark" and render it in Child's <p>.

Write the code in the live editor. Your answer is checked automatically.

Free sign-in required · Google login available

to save your exercise progress.
Finished this lesson?
Mark it complete to track your progress.

Stuck on something?

Ask the community in the CodesInTech forum.

Need a developer?

Learning on your own is great — and when you need professional help, our team builds custom software, websites and mobile apps for clients worldwide.

Explore Our Services