【问题标题】:Reactjs routing causing page render issuesReactjs 路由导致页面渲染问题
【发布时间】:2020-11-27 06:41:14
【问题描述】:

我有以下 App.js:

function App() {
  return (
    <div className="App">
    <Header></Header>
    <HomePage></HomePage>             
    </div>
  );
}

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

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

<Router>
<Switch>                                                
    <Route path='/login' component={Authentication} />                                              
</Switch>
</Router>

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

解决方案:

将以下路由添加到路由器

<Route exact path='/' component={Home} />

【问题讨论】:

  • App 是否在路由上呈现?这两个 sn-ps 是如何相互关联的?
  • 没有应用程序未在路线上呈现。 Header 组件有一个登录链接,该链接有一个与之关联的路由。

标签: reactjs routes react-router header


【解决方案1】:

对这个问题使用精确。

    <Route exact path="/">
        <Home />
    </Route>

【讨论】:

    【解决方案2】:

    您必须在 Route 部分添加“确切路径”关键字,如下所示: &lt;Route exact path="/" component={Home} /&gt; 如果你不使用“exact”,它将渲染路由包含“/”的所有组件。

    【讨论】:

      【解决方案3】:

      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>;
      }

      【讨论】:

      • 用解决方案更新了 OP。
      猜你喜欢
      • 1970-01-01
      • 2020-03-23
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多