I am working on a project that uses React Router v5. My component, HeatMapContainer
, is rendered from within a Switch like this:
<Switch>
<Route path="/" exact component={LandingPage} />
<Route path="/table" component={TablePage} />
<Route path="/heatmap" component={HeatMapContainer} />
<Route component={NotFoundPage} />
</Switch>
I am attempting to create a nested Switch inside HeatMapContainer
that will render different components based on the nested route. Inside HeatMapContainer
I have this div:
<div style={{ display: 'flex', justifyContent: 'center', width: '100%' }}>
HEAT MAP CONTAINER
<Link to="/heatmap/all">All</Link>
<Route path="/heatmap/all" element={<AllOfficesRoute />} />
</div>
Here is the AllOfficesRoute
component I want to see upon clicking the Link:
function AllOfficesRoute() {
return (
<div className="all-offices-route">
ALL OFFICES
</div>
);
}
Currently, the Link works and pushes the right path [ /heatmap/all
] onto history, but no component shows up. I started trying absolute paths because I distrusted relative paths, but even absolute paths don't seem to work here. Any help understanding what I'm missing would be appreciated.
CodePudding user response:
You appear to be mixing RRDv5 and RRDv6 component API/syntax. If using RRDv5 the descendent route rendered by HeatMapContainer
should render content on the component
prop (or render
or children
function props) instead of a non-existent element
prop.
<Switch>
<Route path="/table" component={TablePage} />
<Route path="/heatmap" component={HeatMapContainer} />
<Route path="/" exact component={LandingPage} />
<Route component={NotFoundPage} />
</Switch>
HeatMapContainer
<div style={{ display: 'flex', justifyContent: 'center', width: '100%' }}>
HEAT MAP CONTAINER
<Link to="/heatmap/all">All</Link>
<Route path="/heatmap/all" component={AllOfficesRoute} />
</div>