File-Based Routing
Last updated
Last updated
File-Based Routing Overview: In Next.js (using the new app folder), every folder and file corresponds to a route. Instead of manually configuring routes (as in traditional single page applications), you simply create folders and files:
A folder inside app/
represents a route segment.
A file named page.js
(or page.jsx
) inside a folder renders the content for that route.
Routing Benefits:
No need for extra libraries: You don’t need React Router or similar tools.
Intuitive and Scalable: Adding nested or dynamic routes is as simple as creating subfolders.
Navigate to your project’s root folder (e.g., open property-shop-next-app in your code editor).
Inside the app/
folder, create a file named page.jsx
if it isn’t already present.
This file represents your home route (/
).
Add a simple component:
/properties
)Inside the app
/
folder, create a new folder called properties
.
Within the properties
folder, create a file named page.jsx
.
This file will render when you visit /properties
.
Example component:
/properties/add
)Inside the properties
folder, create a subfolder named add
.
Within the add
folder, create a file called page.jsx
.
This page renders at the route /properties/add
.
Example:
/properties/[id]
)Inside the properties
folder, create a folder for the dynamic segment.
Name it [id]
(using square brackets tells Next.js that this part is dynamic).
Within the [id]
folder, create a file named page.jsx
.
This file will handle any route matching /properties/some-id
.
Example component:
Purpose: To capture additional sub-paths beyond the dynamic parameter.
Implementation: Rename the folder from [id]
to [...id]
.
This allows any route matching /properties/anything/here
to be handled by the same component.
Note: Use catch-all routes only when you need to handle nested dynamic segments.
<Link>
ComponentImport Link from next/link
:
Replace traditional <a>
tags with <Link>
for client-side navigation:
Example in your home page:
Benefit: Using <Link>
improves performance by preventing full page reloads and enabling smooth client-side transitions.
File-Based Routing:
Every folder in the app/
directory corresponds to a URL segment.
Naming a file page.jsx
automatically makes it a routable page.
Nested and Dynamic Routes:
Create nested folders to represent sub-routes (e.g., /properties/add
).
Use square brackets (e.g., [id]
) for dynamic parameters.
Optionally, use [...id]
for catch-all dynamic routes.
Client-Side Navigation:
Always use the <Link>
component from Next.js for smoother navigation between pages.