i am trying to use the useContext hook for the first time and i am not getting the name displayed on screen, i have never used useContext ever before, so pls a little bit of explination of my mistake will be appreciated. Here is the code: (edit: added App.js)
AuthContext.js
JavaScript
x
14
14
1
const AuthContext = createContext()
2
3
4
export default AuthContext;
5
6
7
export const AuthProvider = ({children}) => {
8
return (
9
<AuthContext.Provider value={{'name':"Dennis"}}>
10
{children}
11
</AuthContext.Provider>
12
)
13
}
14
Header.js
JavaScript
1
20
20
1
import React, { createContext, useContext } from 'react'
2
import { Link } from 'react-router-dom'
3
import AuthContext from '../context/AuthContext'
4
5
6
const Header = () => {
7
let { name } = useContext(AuthContext)
8
return (
9
<div>
10
<Link to="/">Home</Link>
11
<span> </span>
12
<Link to="/login">Login</Link>
13
<h1>Hello {name}</h1>
14
15
</div>
16
)
17
}
18
19
export default Header
20
App.js
JavaScript
1
32
32
1
import './App.css';
2
import {
3
BrowserRouter,
4
Routes,
5
Route,
6
} from "react-router-dom";
7
import HomePage from './pages/HomePage';
8
import LoginPage from './pages/LoginPage';
9
import Header from './components/Header';
10
import PrivateRoute from './utils/PrivateRoute'
11
import AuthProvider from './context/AuthContext';
12
13
14
function App() {
15
return (
16
<div className="App">
17
<BrowserRouter>
18
<AuthProvider>
19
<Header />
20
<Routes>
21
22
<Route path="/" element={ <PrivateRoute> <HomePage /> </PrivateRoute>} />
23
<Route path="/login" element={<LoginPage />} />
24
25
</Routes>
26
</AuthProvider>
27
</BrowserRouter>
28
</div>
29
);
30
}
31
export default App;
32
i have added the error screenshot
Advertisement
Answer
JavaScript
1
2
1
import AuthProvider from './context/AuthContext';
2
Instead of the above, you have to import the AuthProvider
like below since you have used named export for AuthProvider
in the AuthContext.js
file.
JavaScript
1
2
1
import { AuthProvider } from './context/AuthContext';
2