If you are interested in developer trends you should check out my new newsletter at: unzip.dev
Let's create a consistent layout for our react hook routing project.
If you want the basic routing from the last tutorial head here: React Hooks with Routing the Easy way
If there is a better way of achieving this with Paratron/hookrouter
, please let me know in the comments.
Create a layout
I'm using tailwind2, you can do it too here.
import {useTitle} from 'hookrouter';
function Layout({ children, title }) {
useTitle(title);
return (
<div className="flex flex-col items-strech">
<header className="w-full bg-blue-100 text-center">
This is my header - {title}
</header>
<main className="w-full bg-blue-300 text-center">
{children}
</main>
<footer className="w-full bg-blue-600 text-center">
This is my footer.
</footer>
</div>
);
}
export default Layout;
Bonus: Let's make it nicer to import pages
Move all of your pages to a new directory named pages
. There create an index.js
file:
import HomePage from './HomePage';
import AboutPage from './AboutPage';
import NotFoundPage from './NotFoundPage';
export {
HomePage,
AboutPage,
NotFoundPage
}
Let's import and use it in App.js
import './App.css';
import {useRoutes} from 'hookrouter';
import Layout from './Layout';
// Pages - This is the previous bonus
import {HomePage, AboutPage, NotFoundPage} from './pages/';
// This applies our layout
function withLayout(page, title){
return <Layout title={title}>{page}</Layout>
}
const routes = {
'/': () => withLayout(<HomePage />, "Home"),
'/about': () => withLayout(<AboutPage />, "About"),
};
function App() {
const routeResult = useRoutes(routes);
return routeResult || withLayout(<NotFoundPage />, "Not found!");
}
export default App;
Top comments (0)