Kodeloka
  1. Kodeloka
  2. Kelas Next.js
  3. Materi

Dasar ยท Modul 3 dari 23

Server Components vs Client Components di Next.js 16

Memahami batasan (serialization boundaries), interaktivitas event listener, dan kapan harus menggunakan 'use client'.

๐ŸŽฏ Poin-Poin Utama Modul Ini:
  • Secara default seluruh komponen adalah React Server Components (RSC)
  • Gunakan direktif 'use client' hanya untuk komponen yang butuh State (useState), Effects (useEffect), atau Event Handlers (onClick)
  • Best practice memisahkan Client Boundaries agar bundle JavaScript tetap kecil

โš–๏ธ Perbandingan Server Components vs Client Components

Fitur / Kebutuhan Server Component (Default) Client Component ('use client')
Fetch Data Database/API โœ… Direct (Kecepatan Tinggi) โš ๏ธ Membutuhkan API Endpoint / SWR
Akses Rahasia (API Keys/ENV) โœ… Aman di Server โŒ Berbahaya (Terekspos ke Browser)
Interaktivitas (onClick, onChange) โŒ Tidak Bisa โœ… Bawaan Browser
React State (useState, useEffect) โŒ Tidak Ada State โœ… Penuh Support

๐Ÿ’ก Contoh Penggunaan Direktif 'use client'

components/CounterButton.tsx
"use client"; // Wajib ditambahkan di baris paling atas file!

import { useState } from "react";

export default function CounterButton() {
  const [count, setCount] = useState(0);

  return (
    <button 
      onClick={() => setCount(count + 1)}
      className="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-md"
    >
      Clicked {count} times
    </button>
  );
}