Open In App

Navigate Between Pages in NextJS

Last Updated : 25 Jul, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

Navigating between pages in Next.js is smooth and optimized for performance, with the help of its built-in routing capabilities. The framework utilizes client-side navigation and dynamic routing to ensure fast, smooth transitions and an enhanced user experience.

Prerequisites:

Navigate Between Pages in NextJS

In Next.js, navigation is primarily handled through the <Link> component from next/link, which enables client-side routing. This avoids full page reloads and speeds up page transitions. For programmatic navigation, the useRouter hook from next/router allows navigation based on user actions or logic.

Approach

To provide the navigation between pages we will:

  • Create the Navbar component for navigating on different pages.
  • Create the pages we want to navigate to.
  • Create pages like home.js for the home page, about.js for the about page, contact.js for the contact page and services.js for the services page.
  • Import the Link component in the navbar component from the next/link.
  • Use the Link component to wrap the elements that should trigger the navigation.
  • We will style the links using Bootstrap to make them visually appealing.

Steps to Create NextJS Application

Step 1: Create a NextJS application using the following command

npx create-next-app my-app

Step 2: Navigate to project directory

cd my-app

Project Structure:

Screenshot-(87)
Folder Structure

The updated dependencies in package.json file will look like:

"dependencies": {
    "bootstrap": "^5.3.3",
    "next": "14.1.3",
    "react": "^18"
}

Example: Implementation to navigate between pages in a Next.js application

JavaScript
// components/Navbar.js

import React from "react";
import Link from "next/link";
import "bootstrap/dist/css/bootstrap.min.css";

const Navbar = () => {
    return (
        <div>
            <nav className="navbar navbar-expand-lg navbar-light 
            bg-success bg-opacity-75 text-light">
                <div className="container">
                    <div className="collapse navbar-collapse"
                     id="navbarNav">
                        <ul className="navbar-nav mr-auto">
                            <li className="nav-item">
                                <Link
                                    href="/"
                                    className="nav-item nav-link text-light"
                                    style={{ fontSize: "30px" }}
                                >
                                    Home
                                </Link>
                            </li>
                            <li className="nav-item">
                                <Link
                                    href="/about"
                                    className="nav-item nav-link text-light"
                                    style={{ fontSize: "30px" }}
                                >
                                    About
                                </Link>
                            </li>
                            <li className="nav-item">
                                <Link
                                    href="/contact"
                                    className="nav-item nav-link text-light"
                                    style={{ fontSize: "30px" }}
                                >
                                    Contact
                                </Link>
                            </li>
                            <li className="nav-item">
                                <Link
                                    href="services"
                                    className="nav-item nav-link text-light"
                                    style={{ fontSize: "30px" }}
                                >
                                    Sevices
                                </Link>
                            </li>
                        </ul>
                    </div>
                </div>
            </nav>
        </div>
    );
};

export default Navbar;
JavaScript
// components/Layout.js

import React from 'react';
import Navbar from "@/Components/Navbar";

const Layout = ({ children }) => {
    return (
        <div>
            <Navbar />
            <main>{children}</main>
        </div>
    );
};

export default Layout;
JavaScript
// page.js

import React from 'react'
import Home from '@/pages/Home';

const page = () => {
    return (
        <>
            <Home />
        </>
    )
}

export default page;
JavaScript
// pages/Home.js

import React from 'react'
import Layout from '@/Components/Layout'

const Home = () => {
    return (
        <Layout >
            <div className="container mt-2">
                <h3>Welcomo to GeeksForGeeks</h3>
                <div>This is <b>Home</b> page</div>
            </div>
        </Layout>
    )
}
export default Home;
JavaScript
// pages/about.js

import Layout from '@/Components/Layout'
import React from 'react'

const About = () => {
    return (
        <Layout >
            <div className="container mt-2">
                This is <b>About</b> page</div>
        </Layout>)
}

export default About
JavaScript
// pages/contact.js

import Layout from '@/Components/Layout'
import React from 'react'

const Contact = () => {
    return (
        <Layout >
            <div className="container mt-2">
                This is <b>Contact</b> page</div>
        </Layout>
    )
}

export default Contact
JavaScript
// pages/services.js

import Layout from '@/Components/Layout'
import React from 'react'

const services = () => {
    return (
        <Layout >
            <div className="container mt-2">
                This is <b>Service</b> page</div>
        </Layout>
    )
}

export default services;

Output:

lnk
Navigate Between Pages in NextJS

Next Article

Similar Reads