Pada Part 1, kita sudah berhasil membuat proyek Next.js, memahami struktur folder, dan membuat halaman dasar. Sekarang di Part 2, kita akan pelajari bagaimana:


🔲 1. Membuat Layout Global (App Router)

Dengan sistem App Router di Next.js 13+, kita bisa membuat layout seperti header, footer, atau sidebar yang persisten di setiap halaman.

📁 Struktur:

app/
├─ layout.jsx
├─ page.jsx
├─ about/
│  └─ page.jsx

✍️ Contoh app/layout.jsx:

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body>
        <header className="bg-blue-600 text-white p-4">
          <h1 className="text-xl font-bold">Belajar Next.js</h1>
        </header>
        <main className="p-4">{children}</main>
        <footer className="bg-gray-200 p-4 text-center">
          &copy; 2025 Elektra Network Vision
        </footer>
      </body>
    </html>
  );
}

Dengan begitu, semua halaman akan otomatis menggunakan layout ini.


🔗 2. Menambahkan Navigasi Antar Halaman

Gunakan komponen Link dari Next.js:

📦 Import:

import Link from 'next/link';

📌 Contoh Navigasi:

<nav className="flex gap-4 bg-gray-100 p-2">
  <Link href="/">Beranda</Link>
  <Link href="/about">Tentang</Link>
  <Link href="/kontak">Kontak</Link>
</nav>

Tempatkan ini di layout.jsx agar muncul di semua halaman.


🌐 3. Fetch Data dari API (Client & Server)

Next.js memungkinkan pengambilan data dari API secara Client-side maupun Server-side. Kita fokus ke pendekatan server-side menggunakan async function di page.jsx.

⚙️ Contoh Ambil Data dari API JSON Placeholder:

app/posts/page.jsx

async function getPosts() {
  const res = await fetch('https://jsonplaceholder.typicode.com/posts');
  return res.json();
}

export default async function PostsPage() {
  const posts = await getPosts();

  return (
    <div>
      <h2 className="text-2xl font-semibold mb-4">Daftar Postingan</h2>
      <ul className="space-y-2">
        {posts.slice(0, 5).map(post => (
          <li key={post.id} className="border p-3 rounded">
            <h3 className="font-bold">{post.title}</h3>
            <p>{post.body}</p>
          </li>
        ))}
      </ul>
    </div>
  );
}

Keunggulan:


🔁 4. Membuat Komponen Navigasi Reusable

Buat file app/components/NavBar.jsx:

import Link from 'next/link';

export default function NavBar() {
  return (
    <nav className="bg-gray-900 text-white p-4 flex gap-4">
      <Link href="/">Home</Link>
      <Link href="/posts">Posts</Link>
      <Link href="/about">About</Link>
    </nav>
  );
}

Gunakan di layout.jsx:

import NavBar from './components/NavBar';

<NavBar />
<main>{children}</main>

💡 Tips SEO di Next.js

export const metadata = {
  title: "Posts - Belajar Next.js",
  description: "Halaman menampilkan data postingan secara dinamis di Next.js",
};

✅ Ringkasan Part 2

Pada bagian kedua ini, kita sudah:

Di Part 3, kita akan bahas:


🔧 Butuh Bantuan Kembangkan Proyek Next.js?

Elektra Network Vision siap mendampingi bisnis Anda membangun aplikasi Next.js modern, efisien, dan siap produksi. Konsultasikan proyek Anda sekarang:

🌐 elektranetworkvision.com – Solusi Web Modern & Inovatif

Ingin lanjut ke Part 3? Balas saja “lanjut part 3”, dan kita bahas form, validasi input, serta state management.

Leave a Reply

Your email address will not be published. Required fields are marked *