I'm trying to set up some nested routes to add a common layout. Check the code out:
<Router>
<Route component={Layout}>
<div>
<Route path='/abc' component={ABC} />
<Route path='/xyz' component={XYZ} />
</div>
</Route>
</Router>
While this works perfectly fine, I still get the warning:
Warning: You should not use <Route component> and <Route children> in the same route; will be ignored
CESCO's answer renders first the component AppShell
then one of the components inside Switch
. But these components are NOT going to render inside AppShell
, they will NOT be children of AppShell
.
In v4 to wrap components you don't put anymore your Route
s inside another Route
, you put your Route
s directly inside a component.
I.E : for the wrapper instead of <Route component={Layout}>
you directly use <Layout>
.
Full code :
<Router>
<Layout>
<Route path='/abc' component={ABC} />
<Route path='/xyz' component={XYZ} />
</Layout>
</Router>
The change is probably explained by the idea to make React Router v4 to be pure React so you only use React elements like with any other React element.
EDIT : I removed the Switch
component as it's not useful here. See when it's useful here.