Home > Net >  <Route> not show the component
<Route> not show the component

Time:06-28

I'm got issue when i making navbar using raect but when i put <Route> component that make the web view blank, but if i remove the <Route> Is someone can helpme to fix my issue?

this is my code on App.js

import './App.css';
import { BrowserRouter as Router, Route, Link } from 'react-router-dom'

function App() {
  return (
    <Router>
      <div>
        <nav className="navbar navbar-expand-lg navbar-light bg-light">
          <Link className="navbar-brand" to="/">Logo</Link>
          <div className="navbar-nav">
            <Link className="nav-item nav-link" to="/">Home</Link>
            <Link className="nav-item nav-link" to="/premium">About Me</Link>
          </div>
        </nav>
      </div>
      <Route path="/" component={() => <h4>Home</h4>}></Route>
      <Route path="/premium" component={() => <h4>About Me</h4>}></Route>
    </Router>
  );
}

export default App;

CodePudding user response:

Route needs to be direct children of Routes

import {
  BrowserRouter as Router,
  Route, 
  Routes,
  Link 
} from 'react-router-dom'
 <Router>
      <div>
        <nav className="navbar navbar-expand-lg navbar-light bg-light">
          <Link className="navbar-brand" to="/">Logo</Link>
          <div className="navbar-nav">
            <Link className="nav-item nav-link" to="/">Home</Link>
            <Link className="nav-item nav-link" to="/premium">About Me</Link>
          </div>
        </nav>
      </div>
    <Routes>
      <Route path="/" element={() => <h4>Home</h4>}></Route>
      <Route path="/premium" element={() => <h4>About Me</h4>}></Route>
    </Routes>
</Router>

CodePudding user response:

For making a navbar you don't need the BrowserRouter or Route components, just the Link from react-router-dom

as shown in the quick start guide: reactrouter.com/QuickStart#Navigation


function Home() {
  return (
    <div>
      <h1>Home</h1>
      <nav>
        <Link to="/">Home</Link> |{" "}
        <Link to="about">About</Link>
      </nav>
    </div>
  );
}

also, the navbar should be put as an element attribute of a Route following this approach:

<BrowserRouter>
    <Routes>
      <Route path="/" element={<App />}>
        <Route index element={<Home />} />
        <Route path="teams" element={<Teams />}>
          <Route path=":teamId" element={<Team />} />
          <Route path="new" element={<NewTeamForm />} />
          <Route index element={<LeagueStandings />} />
        </Route>
      </Route>
    </Routes>
  </BrowserRouter>
  • Related