【问题标题】:Link not giving any output with 'react-router-dom'使用“react-router-dom”链接不提供任何输出
【发布时间】:2021-10-11 14:51:56
【问题描述】:

我正在尝试将 NavBar 添加到我的 app.js 文件中。 当我加载页面时,Route 文件正在加载,但在 NavBar 中设置的链接文件没有出现。

这是导航栏页面

import React from 'react';
import { Link } from 'react-router-dom';

const NavBar = () => ( 
        <nav>
            <ul>
                <li>
                    <Link to="/">Home</Link>
                </li>
                <li>
                    <Link to="/about">About</Link>
                </li>
                <li>
                    <Link to="/article">Article</Link>
                </li>
                <li>
                    <Link to="/article-list">Article List</Link>
                </li>
            </ul>
        </nav>
)

export default NavBar;

那么下面是app.js文件

import Homepage from './Pages/Homepage';
import AboutPage from './Pages/AboutPage';
import ArticlesList from './Pages/ArticlesList';
import ArticlePage from './Pages/ArticlePage';
import NavBar from './NavBar';
import {Routes, Route} from 'react-router-dom';

import './App.css';

function App() {
  return (
    <Routes>
      <div className="App">
        <NavBar />
        <div id="page-body">
          <Route path="/" element={<Homepage />} />
          <Route path="/about" element={<AboutPage />}/>
          <Route path="/article-list" element={<ArticlesList />} />
          <Route path="/article" element={<ArticlePage />} />
      </div>
    </div>
    </Routes>
  );
}

export default App;

我将 NavBar 保留在 pages 文件夹之外 我很困惑它可能是什么

只要我的 package.json 文件中的 react-router-dom 版本是:

    "react-router-dom": "^6.0.0-beta.6",

index.js 文件:

import React from 'react';
import ReactDOM from 'react-dom';
import {BrowserRouter as Router} from "react-router-dom";
import './index.css';
import App from './App';


ReactDOM.render(
  <Router>
    <App />
  </Router>,
  document.getElementById('root')
);

【问题讨论】:

  • 你添加了 BrowserRouter 吗?
  • 是的 BrowserRouter 在 index.js 文件中
  • 您基本上想在每条路线中显示您的导航栏组件?然后你必须将你的导航栏组件包装在每个路由组件中

标签: javascript reactjs react-router react-router-dom


【解决方案1】:

我认为您的导航栏应该在 app.js 中的 Routes 标签之外,然后在您的导航栏文件中,将所有内容包裹在标签周围。

App.js 应该如下所示:

import Homepage from './Pages/Homepage';
import AboutPage from './Pages/AboutPage';
import ArticlesList from './Pages/ArticlesList';
import ArticlePage from './Pages/ArticlePage';
import NavBar from './NavBar';
import {Routes, Route} from 'react-router-dom';

import './App.css';

function App() {
  return (
   <div>
    <NavBar />
    <Routes>
      <div className="App">
        
        <div id="page-body">
          <Route path="/" element={<Homepage />} />
          <Route path="/about" element={<AboutPage />}/>
          <Route path="/article-list" element={<ArticlesList />} />
          <Route path="/article" element={<ArticlePage />} />
        </div>
      </div>
    </Routes>
    </div>
  );
}

export default App;

此外,您的导航组件应如下所示:

   import React from 'react';
import { Link, Routes } from 'react-router-dom';

const NavBar = () => ( 
        <nav>
          <Routes>
            <ul>
                <li>
                    <Link to="/">Home</Link>
                </li>
                <li>
                    <Link to="/about">About</Link>
                </li>
                <li>
                    <Link to="/article">Article</Link>
                </li>
                <li>
                    <Link to="/article-list">Article List</Link>
                </li>
            </ul>
          </Routes>
        </nav>
)

export default NavBar;

您可能还会遇到一个问题,即您使用 a 包裹您的 App 组件,但我不能 100% 确定这一点。

【讨论】:

  • 在 App.js 中不使用 BrowserRouter 为什么要导入它?
  • @DavidGrosh 因为这就是他们文件中的样子。它不需要,但我不想破坏任何东西。一旦他们删除它,他们将获得未使用的导入消息并最有可能自行实现。如果您认为我遗漏了什么,请随时编辑我的答案
  • 您好,感谢您的帮助。 'react-router-dom' 版本 6 不支持 Switch 'Switch' 已替换为 'Routes' 当我尝试将 Routes 添加到 NavBar.js 时,它仍然没有出现
  • @robocop 哦,我明白了。我很抱歉。也许尝试检查一下? github.com/remix-run/react-router/releases/tag/v6.0.0-beta.6 我认为您的导航栏应该在 app.js 中的 Routes 标记之外,然后在导航栏文件中,将所有内容包裹在 标记周围。我会更新我的答案,以便您了解我在说什么。
  • 非常感谢您的帮助,在您的帮助下,我设法弄清楚了。这就像我的 NavBar 标记需要位于 app.js 文件中的 之外一样简单。如果您尝试在 NavBar 文件中添加路由器或开关,则会收到错误消息。我将使用正确的格式编辑您的答案并将其标记为正确。非常感谢您的帮助。
猜你喜欢
  • 2017-11-12
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-11
  • 2020-11-05
  • 1970-01-01
相关资源
最近更新 更多