reactjs - Switch 无法在反应路由器中渲染组件
问题描述
嘿伙计们,我有点坚持一个简单的问题,我的路由不起作用,不知道为什么
编码:
<BrowserRouter>
<div className="App">
<Header></Header>
<Switch>
<Route component={Home} exact path='/'></Route>
<Route component={ToyApp} exact path='/app'></Route>
</Switch>
</div>
</BrowserRouter>
导航栏:
<nav>
<BrowserRouter>
<NavLink to='/'>Home</NavLink>
<NavLink to='/app'>App</NavLink>
</BrowserRouter>
</nav>
即使我转到 /app,也只有 Home 组件呈现,当我更改它们的顺序时,只会出现 app 组件。
编辑:当我在浏览器中手动更改网址时它可以工作,所以问题一定出在导航上
解决方案
为什么Browser Router
?如果您使用的是可以处理动态 URL 的动态服务器,那么您需要使用 BrowserRouter 组件,否则如果您使用的服务器仅提供您可以使用的静态文件HashRouter
。
一个Link
组件有一个 to 属性,它告诉 React Router 导航到的目的地。NavLink
是 Link 的子类,它将样式信息添加到呈现的元素(您可以使用其中任何一个。)
您可以在 BrowserRouter 中使用您的组件。发布只是一个参考:
class App extends Component {
render() {
return (
<BrowserRouter>
<div>
<ul>
<li><Link to={'/'} className="nav-link"> Home </Link></li>
<li><Link to={'/contact'} className="nav-link">Contact</Link></li>
</ul>
</nav>
<hr />
<Switch>
<Route exact path='/' component={Home} />
<Route path='/contact' component={Contact} />
</Switch>
</div>
</BrowserRouter>
);
}
}
更多信息:https ://www.techiediaries.com/react/react-router-5-4-tutorial-examples/
推荐阅读
- c# - 如何使用反射从方法中获取字段的名称?
- javascript - ASP.NET MVC 向 JS 发送类对象的问题 - JS 数组中的空对象
- reactjs - 我想从此数组中获取值,但我无法准确选择它
- html - 如何将无序列表拆分为特定点的列?
- vue.js - 如何在 vuepress 或 vuejs 中显示数组中的图像?
- f# - 如何在 F# 中创建一个可以加密字节数组的 xor 函数?
- docker - COPY 命令是否创建中间容器?
- actions-on-google - 意图填充槽 - Google Actions Builder
- flutter - Flutter TextFormField 用 NumberFormat 显示值
- php - PhpStorm 2021.2 语法错误即使在修复后也不会消失