File-Based Routing
File-Based Routing

1. Understanding the File-Based Routing Concept
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(orpage.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.
2. Creating Basic Routes
a. Home Page Route
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 namedpage.jsxif it isn’t already present.This file represents your home route (
/).Add a simple component:
b. Creating a New Route (e.g., /properties)
/properties)Inside the
app/folder, create a new folder calledproperties.Within the
propertiesfolder, create a file namedpage.jsx.This file will render when you visit
/properties.Example component:
3. Building Nested Routes
a. Nested Route for Adding a Property (/properties/add)
/properties/add)Inside the
propertiesfolder, create a subfolder namedadd.Within the
addfolder, create a file calledpage.jsx.This page renders at the route
/properties/add.Example:
4. Implementing Dynamic Routes-[slug] or [id]
a. Creating a Dynamic Route for a Single Property (/properties/[id])
/properties/[id])Inside the
propertiesfolder, 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 namedpage.jsx.This file will handle any route matching
/properties/some-id.Example component:
b. (Optional) Creating a Catch-All Route
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/hereto be handled by the same component.
Note: Use catch-all routes only when you need to handle nested dynamic segments.
5. Navigating Between Routes
a. Using the Next.js <Link> Component
<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.
6. Recap and Best Practices
File-Based Routing:
Every folder in the
app/directory corresponds to a URL segment.Naming a file
page.jsxautomatically 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.
Last updated