// highlight-range{1-4} // Context lets us pass a value deep into the component tree // without explicitly threading it through every component. // Create a context for the current theme (with "light" as the default). const ThemeContext = React.createContext('light'); class App extends React.Component { render() { // highlight-range{1-3,5} // Use a Provider to pass the current theme to the tree below. // Any component can read it, no matter how deep it is. // In this example, we're passing "dark" as the current value. return ( ); } } // highlight-range{1,2} // A component in the middle doesn't have to // pass the theme down explicitly anymore. function Toolbar() { return (
); } class ThemedButton extends React.Component { // highlight-range{1-3,6} // Assign a contextType to read the current theme context. // React will find the closest theme Provider above and use its value. // In this example, the current theme is "dark". static contextType = ThemeContext; render() { return