spinny:~/writing $ less mastering-react-server-components.md
12React Server Components (RSC) telah mengubah secara asas cara kita membina aplikasi React. Dengan memindahkan logik pemaparan ke pelayan, kita boleh mengurangkan berkas JavaScript yang dihantar kepada klien dengan ketara, membawa kepada masa pemuatan yang lebih pantas dan pengalaman pengguna yang lebih baik. Dalam artikel ini, kita meneroka corak lanjutan dan amalan terbaik untuk memanfaatkan RSC pada 2026.34## Apakah Server Components?56Secara tradisional, komponen React dipaparkan sepenuhnya pada klien (CSR) atau dipra-papar pada pelayan sebagai HTML (SSR) dan kemudian dihidrat pada klien. **Server Components** membolehkan kita memaparkan komponen _secara eksklusif_ pada pelayan. Kod mereka tidak pernah dihantar ke pelayar.78### Manfaat9101. **Saiz Berkas Sifar**: Kebergantungan yang digunakan dalam Server Components (seperti penghurai markdown atau pustaka tarikh yang berat) kekal pada pelayan.112. **Akses Backend Langsung**: Anda boleh membuat pertanyaan pangkalan data secara langsung di dalam komponen anda tanpa mendedahkan titik akhir API.123. **Pemisahan Kod Automatik**: Komponen klien yang diimport di sisi pelayan dipecahkan secara automatik kepada berkas berasingan.1314## Corak Pengambilan Data1516Dengan RSC, anda boleh menjadikan komponen anda `async` dan menunggu data secara langsung.1718```tsx19// app/users/page.tsx20import { db } from '@/lib/db';2122export default async function UsersPage() {23 const users = await db.user.findMany();2425 return (26 <main>27 <h1>Pengguna</h1>28 <ul>29 {users.map((user) => (30 <li key={user.id}>{user.name}</li>31 ))}32 </ul>33 </main>34 );35}36```3738### Suspense untuk Penstriman3940Oleh kerana pengambilan data boleh menjadi perlahan, balut komponen anda dalam `<Suspense>` untuk menunjukkan UI sandaran serta-merta semasa data dimuatkan.4142```tsx43import { Suspense } from 'react';44import UserList from './UserList';45import LoadingSkeleton from './LoadingSkeleton';4647export default function Page() {48 return (49 <section>50 <h1>Pengguna Saya</h1>51 <Suspense fallback={<LoadingSkeleton />}>52 <UserList />53 </Suspense>54 </section>55 );56}57```5859## Menyelitkan Komponen Server dan Klien6061Salah satu aspek yang paling mengelirukan ialah cara menggabungkan komponen Server dan Klien.6263**Peraturan Am**: Server Components boleh mengimport Client Components. Client Components _tidak boleh_ mengimport Server Components secara langsung. Walau bagaimanapun, anda boleh menghantar Server Component sebagai `children` kepada Client Component.6465### Corak "Children"6667```tsx68// ClientComponent.tsx69'use client';7071import { useState } from 'react';7273export default function ClientWrapper({ children }) {74 const [count, setCount] = useState(0);7576 return (77 <div onClick={() => setCount((c) => c + 1)}>78 Bilangan: {count}79 {children} {/* Ini boleh menjadi Server Component! */}80 </div>81 );82}83```8485```tsx86// ServerPage.tsx87import ClientWrapper from './ClientWrapper';88import ServerContent from './ServerContent';8990export default function Page() {91 return (92 <ClientWrapper>93 <ServerContent /> {/* Ini berfungsi dengan sempurna */}94 </ClientWrapper>95 );96}97```9899## Perangkap Biasa1001011. **Menggunakan Context dalam Server Components**: Context adalah konsep sisi klien. Jika anda perlu berkongsi data di sisi pelayan, hantarkannya sebagai props atau gunakan cache skop permintaan yang khusus.1022. **Menambah Event Handler**: Anda tidak boleh menambah `onClick` atau `onChange` pada Server Component. Logik itu terletak dalam nod daun Client Component yang generik.103104## Kesimpulan105106React Server Components bukan sekadar ciri; ia adalah anjakan paradigma. Dengan memahami sempadan antara pelayan dan klien, anda boleh membina aplikasi yang sangat interaktif dan luar biasa pantas.107
:Menguasai React Server Components pada 2026lines 1-107 (END) — press q to close