I am very excited and nervous at the same time as it is my first blog post. Recently I was working on a project in which the heirarchy of the components was like below diagram
Let me explain you the problem, I need to show the PageNotFound page without header and footer section and in layout I had defined the header and footer section with main as defined in the above diagram. If I had defined the PageNotFound in the AppRoutes components which had all the routes in my application, then I have to display the header and footer section in PageNotFound page.
There was not enough content on the internet for above issue, But luckily I have found some stuff regarding the state management in the react-router via browser history api. So the solution was two use react-router's Redirect component.
<Switch> <Route exact path='/'> <HomePage /> </Route> <Route path='*'> <Redirect to={{ ...location, state: { from: '404' } }} /> </Route> </Switch>
and in the Layout component I checked if the router state was { from: '404' }
and if that was the case then I showed only the PageNotFound page otherwise the Header, Footer and main section.
const Layout = ({ children }) => { const { state } = useLocation(); {state?.from == '404' ? ( <PageNotFoundPage /> ) : ( <Fragment> <Header /> <Flex as='main' > {children} </Flex> <Footer /> </Fragment> )} ); };
Please let me know in the comments, if I am not making sense or anything wrong about the article.
Top comments (0)