reactjs - react-router-dom 条件渲染
问题描述
当路由路径为“/flower”时,我想添加更多代码
所以我的代码如下。
[应用程序.js]
class App extends Component {
render() {
return (
<Router>
<div className="App">
<Header />
<SideBar />
<section>
<Route exact path="/" component={Home} />
<Route exact path="/flower" component={Flower} />
<Route exact path="/editorial" component={Editorial} />
</section>
<Footer />
</div>
</Router>
);
}
}
[侧边栏.js]
import React, { Component } from 'react';
import './index.css';
import { NavLink } from 'react-router-dom';
class index extends Component {
render() {
return (
<aside>
<NavLink exact to="/" className="item"><i className="fas fa-home"></i>HOME</NavLink>
<NavLink to="/flower" className="item"><i className="fab fa-pagelines"></i>FLOWER</NavLink>
<NavLink to="/editorial" className="item"><i className="fas fa-newspaper"></i>EDIT</NavLink>
</aside>
);
}
}
除了/flower,所有页面的侧边栏都是一样的。
当用户输入 /flower 时,我想在我的SideBar
.
[不是/花]
[用户进入 /flower]
但是,我不知道如何检测到当前路径是 /flower。
有什么解决方案或指导方针吗?
谢谢。
解决方案
但是,我不知道如何检测到当前路径是 /flower。
但是你已经这样做了Route
:)
<Route exact path="/" component={Home} />
<Route exact path="/flower" component={Flower} />
<Route exact path="/editorial" component={Editorial} />
您根据当前路径有条件地渲染组件。因此Home
,如果当前 URL 路径与您传递给的匹配器匹配,则将呈现Flower
或呈现。Editorial
path
Route
您可以在侧边栏中执行完全相同的操作:
<aside>
<NavLink exact to="/" className="item"><i className="fas fa-home"></i>HOME</NavLink>
<NavLink to="/flower" className="item"><i className="fab fa-pagelines"></i>FLOWER</NavLink>
<NavLink to="/editorial" className="item"><i className="fas fa-newspaper"></i>EDIT</NavLink>
<Route
path="/flower"
render={() => (
<div>
<p>more stuff</p>
</div>
)}
/>
</aside>
我使用了render但您可以像在其他s中一样使用component
prop 。Route
推荐阅读
- javascript - JS using.each 只选择一个条件元素
- reactjs - eslint propvalidation 突然太严格了
- ios - 如何在 SwiftUI 中缩放系统字体以支持动态类型?
- javascript - 将 node/webpack/express/mysql 项目部署到 Heroku 错误“Uncaught ReferenceError: regeneratorRuntime is not defined”bundle.js
- javascript - Webpack 延迟加载:块无法加载依赖项
- svg - 动态大小的 SVG 中文本的绝对定位
- c# - 将 DataContext 绑定到对象并不总是给出实际值,如果我试图从外部类中获取它
- amazon-web-services - AWS 负载均衡器内部与外部
- networking - 为什么通过命令行向 Thingsboard 设备发送数据时出现错误(“status”:405,“error”:“Method Not Allowed”)
- bash - 如何让 Cocoa 应用程序从终端运行一个动作,然后返回结果