I was getting the output as expected until I started using the AuthContext here. But after that it just staring rendering a blank page. Can someone please help me out?
Please take a look at my files
Header.js:
import React, {useContext} from 'react'
import { Link } from 'react-router-dom'
import AuthContext from '../context/AuthContext'
const Header = () => {
let {name}=useContext(AuthContext)
return (
<div>
<Link to="/"> Home </Link>
<span> | </span>
<Link to="/login"> Login </Link>
<p>Hi {name}</p>
</div>
)
}
export default Header
AuthContext.js:
import { createContex, useState, useEffect } from "react";
const AuthContext=createContex()
export default AuthContext;
export const AuthProvider=({children}) => {
//let contextData={}
return (
<AuthContext.Provider value={{'name':'Muks'}}>
{children}
</AuthContext.Provider>);
}
HomePage.js
import React from 'react'
const HomePage = () => {
return (
<div>
<p> I am logged in to the home page!</p>
</div>
)
}
export default HomePage
LoginPage.js:
import React from 'react'
const LoginPage = () => {
return (
<div>
<form>
<input type="text" name="username" placeholder='Enter Username'/>
<input type="password" name="password" placeholder='Enter Password'/>
<input type="submit"/>
</form>
</div>
)
}
export default LoginPage
PrivateRoute.js:
import { Route, Redirect } from 'react-router-dom'
//import { useContext } from 'react'
//import AuthContext from '../context/AuthContext'
const PrivateRoute = ({children, ...rest}) => {
const authenticated=false
//console.log("PrivateRoute worked fine!")
//let {user} = useContext(AuthContext)
return(
<Route {...rest}>{!authenticated ? <Redirect to="/login" /> : children}</Route>
)
}
export default PrivateRoute;
** App.js:**
import './App.css';
import { BrowserRouter as Router, Route} from 'react-router-dom'
import PrivateRoute from './utils/PrivateRoute'
import { AuthProvider } from './context/AuthContext';
import HomePage from './pages/HomePage'
import LoginPage from './pages/LoginPage'
import Header from './components/Header';
function App() {
return (
<div className="App">
<Router>
<AuthProvider>
<Header/>
<PrivateRoute component={HomePage} path="/" exact/>
<Route component={LoginPage} path="/login" />
</AuthProvider>
</Router>
</div>
);
}
export default App;
index.js:
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
I would really appreciate if the solution is provided with the changes that I need to make. Thanks.