【问题标题】:the routes change but the pages are not shown in my react app路线发生变化,但页面未显示在我的反应应用程序中
【发布时间】:2022-01-17 17:33:55
【问题描述】:

我刚刚使用了引导程序中的导航栏,并添加了组件链接,我曾经使用 react-router-Dom,路径正常但页面没有更改,我应该更改导航栏中的内容吗?它来自 bootstrap 5 ,未显示组件的 conatian 。

App.js


import './App.css';
import Navbar from './components/Navbar';
import { BrowserRouter as Router , Route , Routes } from 'react-router-dom';
import Home from './screens/Home';
import About from './screens/About';
import Contact from './screens/Contact';
import traditions from './screens/Traditions';
import Histoire from './screens/Histoire';
import Monuments from './screens/Monuments';

function App() {
  return (
   
    <>
<Router>
<Navbar/>
<Routes>
     <Route exact path="/"  component={Home}/>
     <Route exact path="/about"  component={About}/>
     <Route exact path="/contact"  component={Contact}/>
     <Route exact path="/traditions"  component={traditions}/>
     <Route exact path="/histoire"  component={Histoire}/>
     <Route exact path="/Monuments"  component={Monuments}/>
     </Routes>
     </Router>
    </>
    
  );
}

export default App;

Navbar.js

import React from 'react'

const Navbar = () => {
    return (
        
        <div class="container">
         <nav class="navbar navbar-expand-lg navbar-light bg-light" >
  <div class="container-fluid">
    <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-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav me-auto mb-2 mb-lg-0">
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="/">home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="/about">about</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="/contact">contact</a>
        </li>
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="Products" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
            Products
          </a>
          <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
            <li><a class="dropdown-item" href="/monuments">monunments</a></li>
            <li><a class="dropdown-item" href="/traditions">traditions</a></li>
            <li><a class="dropdown-item" href="/histoire">histoire</a></li>
          </ul>
        </li>
      </ul>
     
    </div>
  </div>
</nav>   
        </div>
    )
}

export default Navbar

【问题讨论】:

  • 这里的答案是否解决/解决了您的问题/问题?在someone answers 之后可以做的事情。干杯。

标签: reactjs react-router react-router-dom bootstrap-5


【解决方案1】:

在最后使用/。当 react router 遇到/ 它会渲染你的主页

<>
  <Router>
    <Navbar/>
    <Switch>
      <Route path="/about" component={About}/>
      <Route path="/contact" component={Contact}/>
      <Route path="/traditions" component={traditions}/>
      <Route path="/histoire" component={Histoire}/>
      <Route path="/Monuments" component={Monuments}/>
      <Route path="/" component={Home}/>
    </Switch>
  </Router>
</>

【讨论】:

    【解决方案2】:

    react-router-dom 版本 6 中,Route 组件 API 发生了显着变化。不再有 componentrender 道具,它们被 element 道具取代,该道具采用 JSX 文字 而不是对 React 组件的引用或返回 JSX 的函数。

    <Routes>
      <Route path="/" element={<Home />} />
      <Route path="/about" element={<About />} />
      <Route path="/contact" element={<Contact />} />
      <Route path="/traditions" element={<Traditions />} />
      <Route path="/histoire" element={<Histoire />} />
      <Route path="/Monuments" element={<Monuments />} />
    </Routes>
    

    旁注:在Navbar 组件中,将所有"class" 属性更改为"className"。如果原始锚&lt;a /&gt; 不起作用,请尝试使用来自react-router-domLink 组件。

    【讨论】:

      【解决方案3】:
      
      import './App.css';
      import Navbar from './components/Navbar';
      import { BrowserRouter as Router , Route , Routes } from 'react-router-dom';
      import Home from './screens/Home';
      import About from './screens/About';
      import Contact from './screens/Contact';
      import Traditions from './screens/Traditions';
      import Histoire from './screens/Histoire';
      import Monuments from './screens/Monuments';
      
      function App() {
        return (
         
          <>
      <Router>
      <Navbar/>
      <Routes>
           <Route exact path="/"  element ={<Home/>}/>
           <Route exact path="/about"  element ={<About/>}/>
           <Route exact path="/contact"  element ={<Contact/>}/>
           <Route exact path="/traditions"  element ={<Traditions/>}/>
           <Route exact path="/histoire"  element ={<Histoire/>}/>
           <Route exact path="/Monuments"  element ={<Monuments/>}/>
           </Routes>
           </Router>
          </>
          
        );
      }
      
      export default App;
      

      【讨论】:

      • 欢迎来到 Stack Overflow。当代码附有解释时,它会更有帮助。 Stack Overflow 是关于学习的,而不是提供 sn-ps 来盲目复制和粘贴。请编辑您的答案并解释它如何回答所提出的具体问题。见【如何回答】stackoverflow.com/questions/how-to-answer)
      【解决方案4】:

      如果您使用的不是版本 6 react-router-dom,则应使用 Switch 而不是 Routes

      <>
        <Router>
          <Navbar/>
          <Switch>
            <Route exact path="/" component={Home}/>
            <Route exact path="/about" component={About}/>
            <Route exact path="/contact" component={Contact}/>
            <Route exact path="/traditions" component={traditions}/>
            <Route exact path="/histoire" component={Histoire}/>
            <Route exact path="/Monuments" component={Monuments}/>
          </Switch>
        </Router>
      </>
      

      但如果您使用的是版本 6,您的代码应该如下所示:

      <>
        <Router>
          <Navbar/>
          <Routes>
            <Route path="/" element={<Home />}/>
            <Route path="/about" element={<About />}/>
            <Route path="/contact" element={<Contact />}/>
            <Route path="/traditions" element={<traditions />}/>
            <Route path="/histoire" element={<Histoire />}/>
            <Route path="/Monuments" element={<Monuments />}/>
          </Routes>
        </Router>
      </>
      

      【讨论】:

      • 我使用的是第 6 版,但它仍然无法正常工作,我认为组件没问题,路线改变但页面没有,它仍然是空的
      • @YassineEssid 你的组件好像没有问题,你是用element代替component吗?因为在版本 6 中,component 已更改为 element,并且不需要 exact,因为它通过 react-router-dom 检测到
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      相关资源
      最近更新 更多