我使用YT教程构建了自己的Navbar
,现在我尝试使用react-router-dom
连接网站的不同部分。但是当我在浏览器中单击Navbar
时,它什么也没有显示,我不知道我做错了什么。
App.js:
import './App.css';
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
import Navbar from './components/Navbar/Navbar'
import Home from './components/Home/Home'
import Blog from './components/Blog/Blog'
import About from './components/About/About'
function App() {
return (
<div className="App">
<Router>
<Navbar />
<Routes>
<Route path='/components/Home/Home' component={Home} />
<Route path='/components/Blog/Blog' component={Blog} />
<Route path='/components/About/About' component={About} />
</Routes>
</Router>
</div>
);
}
export default App;
Navbar.js:
import React, { Component } from 'react';
import { MenuItems } from './MenuItems';
import './Navbar.css'
import { Button } from '../Button'
import { NavLink as Link } from 'react-router-dom'
class Navbar extends Component {
state = {
clicked: false
}
handleClick = () => {
this.setState({ clicked : !this.state.clicked })
}
render() {
return(
<nav className="NavbarItems">
<h1 className="navbar-logo">Afrika-Link</h1>
<div className="menu-icon" onClick={this.handleClick}>
<i className={this.state.clicked ? 'fas fa-times' : 'fas fa-bars'}></i>
</div>
<ul className={this.state.clicked ? 'nav-menu active' : 'nav-menu'}>
{MenuItems.map((item, index) => {
return (
<li key={index}>
<a className={item.cName} href={item.url}>
{item.title}
</a>
</li>
)
})}
</ul>
<Button>Sign Up</Button>
</nav>
)
}
}
export default Navbar
Home.js:
import React, { Component } from 'react';
class Home extends Component {
render() {
return (
<p>Home</p>
);
}
}
export default Home
(The到目前为止,部分都是这样的,所以只有最少的内容需要检查是否显示)
MenuItems.js:
export const MenuItems = [
{
title: 'Home',
url: '../Home/Home',
cName: 'nav-links'
},
{
title: 'Blog',
url: '../Blog/Blog',
cName: 'nav-links'
},
{
title: 'About',
url: '../About/About',
cName: 'nav-links'
},
{
title: 'Sign up',
url: '#',
cName: 'nav-links-mobile'
}
]
我已经尝试将Navbar.js
中的a
替换为href
,但没有解决问题。
3条答案
按热度按时间pu3pd22g1#
问题
react-router-dom@6
Route
组件在element
属性上呈现其内容。element
属性采用React.ReactNode
,即JSX。Navbar
组件应呈现RRDLink
组件,而不是原始定位点<a>
标记。链接目标路径在to
属性中指定。建议的解决方案
App.jsx
menuItems.js
Navbar.jsx
2nbm6dog2#
将
Route
的path
赋给数组中的url
。确保它们匹配。并将
<a href="" />
转换回<Link />
hsgswve43#
我希望以下解决方案可以帮助您: