I was following a tutorial and my localhost is completely blank after importing {Link} from react-router-dom. Followed word for word but my local host is blank as soon as I added link in navbar.js.
import React from 'react';
import {Link} from 'react-router-dom';
function Navbar() {
return(
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<Link to="/" class="navbar-brand">SkyCloud</Link>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-togglser-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item">
<Link to="/" class="nav-link active">Home</Link>
</li>
<li class="nav-item">
<Link to="/about" class="nav-link active">About</Link>
</li>
<li class="nav-item">
<Link to="/contact" class="nav-link active">Contact</Link>
</li>
</ul>
</div>
</div>
</nav>
);
}
export default Navbar;
And this is my App.js file...
import React from 'react';
import Navbar from './components/inc/Navbar';
import Home from './components/pages/Home';
import About from './components/pages/About';
import Contact from './components/pages/Contact';
import {BrowserRouter as Router} from 'react-router-dom';
function App() {
return (
<Router>
<div>
<Navbar/>
<Home/>
<About/>
<Contact/>
</div>
</Router>
);
}
export default App;
You need to wrap your components inside Route HOC, if you are using react router v5
<Route path="/">
<Home/>
</Route>
<Route path="/about">
<About/>
</Route>
<Route path="/Contact">
<Contact/>
</Route>
if its react router v6, answer is
<Route index path="/" element={<Home />} />
<Route path="/contacts" element={<Contact/>} />
<Route path=/about" element={<About/>} />
You should import Routes and Route too from "react-router-dom";
then your code will become
import React from 'react';
import Navbar from './components/inc/Navbar';
import Home from './components/pages/Home';
import About from './components/pages/About';
import Contact from './components/pages/Contact';
import {Routes,Route ,BrowserRouter as Router} from 'react-router-dom';
function App() {
return (
<Router>
<div>
<Navbar/>
<Routes>
<Route exact path="/" element={<Home/>}>
<Route path="/about" element={ <About/>}>
<Route path="/contact" element={ <Contact/>} />
</Routes>
</div>
</Router>
);
If you don't know which version you use . please check package.json and search react-router-dom . Then you will see the version. (React router dom v6) If you use link ,You need to use router and routes. I think no error is shown your project. This is the documentation
https://reactrouter.com/docs/en/v6/getting-started/installation#create-react-app
This is demo code of routes , route
import * as React from "react";
import { Routes, Route, Link } from "react-router-dom";
function App() {
return (
<div className="App">
<h1>Welcome to React Router!</h1>
<Routes>
<Route path="/" element={<Home />} />
<Route path="about" element={<About />} />
</Routes>
</div>
);
}
If you Use V5
import {
BrowserRouter,
Switch,
Route,
Link,
useRouteMatch
} from "react-router-dom";
function App() {
return (
<BrowserRouter>
<Switch>
<Route exact path="/">
<Home />
</Route>
<Route path="/users">
<Users />
</Route>
</Switch>
</BrowserRouter>
);
}
react router dom v5 documentation https://reactrouter.com/docs/en/v6/upgrading/v5