reactjs - 在初始化 BrowserRouter 的组件中获取 location 属性
问题描述
我正在尝试react-router
使用transition-group
但偶然发现了这个问题,即我无法location
直接在此组件中访问 prop。是否有不需要创建另一个子组件的解决方案,我可以将其包装进去withRouter
以访问location
?
class App extends React.Component {
public render() {
return (
<BrowserRouter basename={process.env.PUBLIC_URL}>
<React.Fragment>
<Navigation language={"en"} />
<Switch>
<TransitionGroup>
<CSSTransition location={this.props.location} timeout={300} classNames="fade">
<Route
path="/p"
render={() => {
return (
<Layout>
<P/>
</Layout>
);
}}
/>
<Route
path="/v"
render={() => {
return (
<Layout>
<V/>
</Layout>
);
}}
/>
</CSSTransition>
</TransitionGroup>
</Switch>
</React.Fragment>
</BrowserRouter>
);
}
}
解决方案
在使用render
方法渲染组件时,您需要将 Router 道具传递给正在渲染的组件,例如
<Route
path="/p"
render={(props) => {
return (
<Layout {...props}>
<P/>
</Layout>
);
}}
/>
<Route
path="/v"
render={(props) => {
return (
<Layout {...props}>
<V/>
</Layout>
);
}}
/>
推荐阅读
- raspberry-pi - 如何使模块之间的 Iot Edge 消息路由在 arm32 (Raspberry Pi) 上工作
- php - Doctrine / Symfony - 强制有效的实体状态
- c# - C# SuperWebSocket 最大连接数 100 已达到
- javascript - 将代码放在 Electron 应用程序中的什么位置以使 JavaScript 工作?
- windows - 无法从生产者向消费者发送消息
- java - ORA-01722 将值设置到数据库表中时
- laravel - Laravel,使用弹出警报
- android - gRPC Android 客户端失去连接“ping 太多”
- azure - 如何在 Application Insights 中区分来自不同实例 .net 核心应用程序的跟踪
- android - Trying to generate 11 characted hash String for SMS Retreiver API