Introduction

Flow

[Global State Provider] -> context
      │
      ▼
[Components] -> useContext -> read state & dispatch actions
      │
      ▼
[Actions] -> update state via useReducer or useState
      │
      ▼
[State Change triggers re-render] -> updated UI

Code

Create Context

import { createContext, useContext, useState } from 'react'

// 1. Create Context
const ThemeContext = createContext()
// ThemeContext.Provider → wraps children to provide values

function App() {
  const [theme, setTheme] = useState('light')

  return (
    // ✅ Provider wraps components that need access
    // child components will receive: value={{ theme, setTheme }}
    <ThemeContext.Provider value={{ theme, setTheme }}>
      <Toolbar />
    </ThemeContext.Provider>
  )
}

Use context value