Reactjs 路由导致页面渲染问题

sot*_*otn 6 routes header reactjs react-router

我有以下 App.js:

function App() {
  return (
    <div className="App">
    <Header></Header>
    <HomePage></HomePage>             
    </div>
  );
}
Run Code Online (Sandbox Code Playgroud)

默认情况下,任何访问该网站的人都应该首先看到主页。

我有一个导航菜单,其中包含以下路由信息:

<Router>
<Switch>                                                
    <Route path='/login' component={Authentication} />                                              
</Switch>
</Router>
Run Code Online (Sandbox Code Playgroud)

当我单击登录菜单链接时,会加载身份验证页面,但在浏览器中向下滚动时,我也可以看到下面的主页。如何仅加载路由器中引用的页面?

解决方案:

将以下路由添加到路由器

<Route exact path='/' component={Home} />
Run Code Online (Sandbox Code Playgroud)

小智 5

中的不同路径Route显示不同的页面(中的组件属性Route),这是一个演示,react-router 文档可能对您有所帮助。祝你好运!

import {
  BrowserRouter as Router,
  Switch,
  Route,
  Link
} from "react-router-dom";

export default function App() {
  return (
    <Router>
      <div>
        <nav>
          <ul>
            <li>
              <Link to="/">Home</Link>
            </li>
            <li>
              <Link to="/about">About</Link>
            </li>
            <li>
              <Link to="/users">Users</Link>
            </li>
          </ul>
        </nav>

        {/* A <Switch> looks through its children <Route>s and
            renders the first one that matches the current URL. */}
        <Switch>
          <Route path="/about">
            <About />
          </Route>
          <Route path="/users">
            <Users />
          </Route>
          <Route path="/">
            <Home />
          </Route>
        </Switch>
      </div>
    </Router>
  );
}

function Home() {
  return <h2>Home</h2>;
}

function About() {
  return <h2>About</h2>;
}

function Users() {
  return <h2>Users</h2>;
}
Run Code Online (Sandbox Code Playgroud)