我正在尝试设置一些嵌套路由来添加公共布局 . 检查代码:
<Router>
<Route component={Layout}>
<div>
<Route path='/abc' component={ABC} />
<Route path='/xyz' component={XYZ} />
</div>
</Route>
</Router>
虽然这很好用,但我仍然收到警告:
警告:您不应在同一路线中使用<Route component>和<Route children>;将被忽略
5 回答
你也可以试试这个:
如果您不希望
Layout
在加载时运行 . 使用此方法:每当历史记录发生变化时,ChatList中的 componentWillReceiveProps 都会运行 .
尝试:
CESCO的答案首先在
Switch
中呈现组件AppShell
then 组件之一 . 但是这些组件不会在AppShell
内呈现,它们不会是AppShell
的子项 .在v4中包装组件你不再将
Route
放在另一个Route
中,你将Route
直接放在一个组件中 .I.E:对于包装而不是
<Route component={Layout}>
,您直接使用<Layout>
.完整代码:
这个变化可能是因为React Router v4是纯React的想法,所以你只使用React元素和任何其他React元素一样 .
编辑:我删除了
Switch
组件,因为's not useful here. See when it'有用here .您需要使用开关组件进行嵌套才能正常工作 . 另外,看到这个question
版本4组件不带孩子,相反,你应该使用渲染道具 .