reactjs - 单击nabber链接时React BrowserRouter不呈现
问题描述
我正在使用 BrowerRouter 为我的项目设置导航,除了我希望组件自行打开而不是我的应用程序组件中的其他所有内容之外,我几乎可以正常工作......有没有办法做到这一点?现在,当我单击导航栏按钮并打开一个我想要的新选项卡时,一切正常,但主应用程序中的所有其他组件也会呈现我不想要的。我正在努力做到这一点,以便当您按下其中一个 nabber 链接按钮时,它会打开一个新选项卡,其中只有组件中的内容,而不是主应用程序组件中的任何其他内容。
这是导航栏组件:
import React from 'react'
import './navbar.css'
import { Link } from 'react-router-dom'
import {BrowserRouter as Router, Switch, Route } from 'react-router-dom'
import HOME_PAGE from './pages/HOME_PAGE.js'
import ABOUT_PAGE from './pages/ABOUT_PAGE'
import CONTACT_PAGE from './pages/CONTACT_PAGE.js'
export default function NAVBAR() {
function hamburgerMenuClick(){
const navbarLinks = document.querySelector('.navbar-links')
navbarLinks.classList.toggle('active')
}
return (
<>
<nav className = "navbar">
<div className = "logo">Logo</div>
<a href="#" className = "toggle-button" onClick = {hamburgerMenuClick}>
<span className = "bar"></span>
<span className = "bar"></span>
<span className = "bar"></span>
</a>
<div className = "navbar-links">
<ul>
<Link to = "/pages/HOME_PAGE.js"><li><a >Home</a></li></Link>
<Link to = "/pages/ABOUT_PAGE.js"><li><a >About</a></li></Link>
<Link to = "/pages/CONTACT_PAGE.js"><li><a >Contact</a></li></Link>
</li>
</ul>
</div>
</nav>
<Router>
<Route exact path = "/pages/HOME_PAGE.js" component = {HOME_PAGE}/>
<Route exact path = "/pages/ABOUT_PAGE.js" component = {ABOUT_PAGE}/>
<Route exact path = "/pages/CONTACT_PAGE.js" component = {CONTACT_PAGE}/>
</Router>
</>
)
}
解决方案
你应该使用开关
<Router>
<Switch>
<Route exact path = "/pages/HOME_PAGE.js" component ={HOME_PAGE}/>
<Route exact path = "/pages/ABOUT_PAGE.js" component = {ABOUT_PAGE}/>
<Route exact path = "/pages/CONTACT_PAGE.js" component = {CONTACT_PAGE}/>
</Switch>
</Router>
推荐阅读
- c# - Visual Studio docker工具在调试时发布端口
- wcf - 如何使用 SOAP UI 工具测试 WCF wsHttpBinding 端点以及证书?
- bash - 在 CSV 文件中搜索第一列中的值,如果找到,将第二列的值向下移动一行
- prolog - 立即在控制台上写入
- swift - 应用内购买不更新沙盒下的所有订阅?
- java - 具有多个数据库服务器的分布式事务似乎不可靠
- python-3.x - 如何让输出一直问我直到满足条件?
- javascript - 如何在画布上绘制流畅的线条而不清除它?
- python - 获取另一个模块的 globals()
- java - 如何从 csv 文件 jmeter 中读取参数