【发布时间】:2020-09-11 17:06:38
【问题描述】:
我正在尝试制作导航栏,但没有重定向到给定页面。如果我单击导航栏中的任何链接,它会更改 url 栏中的路径,但不会重定向到该页面。我不确定我是否遗漏了什么。当我用标签替换它时,它工作得很好。
Navbar.js
import React from "react";
import { BrowserRouter as Router, Link, Switch } from "react-router-dom";
const Navbar = () => {
return (
<Router>
<Switch>
<nav>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
<li>
<Link to="/articles">Articles</Link>
</li>
<li>
<Link to="/articles-all">All articles</Link>
</li>
</ul>
</nav>
</Switch>
</Router>
);
};
export default Navbar;
App.js
import React from "react";
import { BrowserRouter as Router, Route } from "react-router-dom";
import './App.css'
//pages
import Home from "./Pages/Home";
import About from "./Pages/About";
import Articles from "./Pages/Articles";
import ArticlesList from "./Pages/ArticlesList";
//components
import Navbar from './components/Navbar';
const App = () => {
return (
<div>
<Navbar/>
<Navigation />
</div>
);
};
export default App;
const Navigation = () => {
return (
<Router>
<div id="page-body">
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/articles" component={Articles} />
<Route path="/articles-all" component={ArticlesList} />
</div>
</Router>
);
};
【问题讨论】:
-
从
Navbar组件中删除Router,Switch并将其添加到Navigation -
这就是我之前这样做的原因,但在 Navbar.js 中收到错误
Error: Invariant failed: You should not use <Link> outside a <Router> -
让我帮你改正
标签: reactjs ecmascript-6 react-router react-router-dom