Today we're going to learn about something called useContext
. Don't worry, we'll make it super easy to understand!
Imagine you have a big family, and you want to tell everyone what's for dinner. Instead of going to each family member one by one, wouldn't it be easier to make an announcement that everyone can hear? That's what useContext
does in React!
useContext
is like a loudspeaker that lets you share information with many parts of your React app at once.
Let's say you're making a website for your school. You want to show the school's name on every page. Without useContext
, you'd have to pass the school name to every single part of your website. With useContext
, you can announce the school name once, and every part of your website can hear it!
Let's learn how to use useContext
with a simple example. We'll create a website that shows your school name.
First, we need to create our loudspeaker. In React, we call this a "Context".
import React from 'react';
// Create our loudspeaker
const SchoolContext = React.createContext();
This creates a special announcer called SchoolContext
that will hold our school name.
Now that we have our loudspeaker, we need to announce the school name to our app. We do this with a "Provider".
function App() {
// Our school name
const schoolName = "Friendly Neighborhood School";
return (
// Announce our school name to the whole app
<SchoolContext.Provider value={schoolName}>
<Header />
<MainContent />
<Footer />
</SchoolContext.Provider>
);
}
Here, we're announcing our schoolName
to our whole app. Every part of our app can now hear this announcement.
Now, in any part of our app, we can listen to this announcement and get our school name!
function Header() {
// Listen to the school name announcement
const schoolName = React.useContext(SchoolContext);
return (
<header>
<h1>{schoolName}</h1>
</header>
);
}
In this Header
component, we're using useContext
to listen for the school name. We can then use this to show the school name in our header.
Here's a small, complete example of how all these pieces work together:
import React from 'react';
// Create our loudspeaker
const SchoolContext = React.createContext();
function App() {
// Our school name
const schoolName = "Friendly Neighborhood School";
return (
// Announce our school name to the whole app
<SchoolContext.Provider value={schoolName}>
<div className="App">
<Header />
<MainContent />
<Footer />
</div>
</SchoolContext.Provider>
);
}
function Header() {
// Listen to the school name announcement
const schoolName = React.useContext(SchoolContext);
return (
<header>
<h1>{schoolName}</h1>
</header>
);
}
function MainContent() {
// We can also listen to the school name here
const schoolName = React.useContext(SchoolContext);
return (
<main>
<h2>Welcome to {schoolName}!</h2>
<p>We're glad you're here.</p>
</main>
);
}
function Footer() {
// And we can listen to it here too!
const schoolName = React.useContext(SchoolContext);
return (
<footer>
<p>© 2023 {schoolName}. All rights reserved.</p>
</footer>
);
}
export default App;
In this example:
SchoolContext
(our loudspeaker).App
, we announce our school name using SchoolContext.Provider
.Header
, MainContent
, and Footer
, we use useContext
to listen for this announcement and get the school name.And that's it! Now you can use the school name anywhere in your app without passing it to every component. It's like magic!
Remember, useContext
is great for information that many parts of your app need to know about. It helps keep your code simple and easy to understand.
Keep practicing, and you'll be a React pro in no time! 🌟