【发布时间】:2019-05-02 23:37:45
【问题描述】:
我正在将一个应用程序从 react-router 版本 3 迁移到 5,并且在试图找出解决以下问题的最佳方法时有点卡住了。
我有一些使用包装组件的路由。
在 routerv3 中我可以做类似的事情
const Container = props =>
<div>
<header>container1</header>
{ props.children }
</div>
const Container2 = props =>
<div>
<header>container2</header>
{ props.children }
</div>
这些容器还有其他功能
<Route component={Container}>
<Route path='/container1' component={Page1} />
</Route>
<Route component={Container2}>
<Route path='/container2' component={Page1} />
</Route>
当导航到/container1 时,它会渲染Page1 组件并用Container1 包裹它,然后在/container2 上它会渲染Page1 和Container2 包裹它。
但是,当移动到路由器 v4+ 时,所有匹配的路由都会被渲染,所以发生的情况是,例如在 /container2 上,结果是
<div>
<header>container1</header>
</div>
<div>
<header>container2</header>
<Page1 />
</div>
有谁知道编写这些“包装组件”的方法,以便仅在路由匹配时才呈现它们?或者如果这不是 react-router 4/5 的工作方式,也许是做这种事情的更好方法。
这是我试图解决这个问题的堆栈闪电的链接
【问题讨论】:
标签: javascript reactjs react-router react-router-v4 react-router-dom