Thuta Learning
ရှာဖွေရန်
IntermediateWeb Developmentintermediate

Server Component နှင့် Client Component

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Server နှင့် Client Component ကို ခွဲခြားရန်
  • use client ကို လိုအပ်သည့်နေရာမှာသာ သုံးရန်
  • Serializable props နယ်နိမိတ်ကို နားလည်ရန်

Next.js App Router ကို သဘောပေါက်သွားစေမယ့် မေးခွန်းတစ်ခုရှိပါတယ်—“ဒီ code က ဘယ်မှာ run သလဲ” ပါ။ Database secret လို server မှာပဲရှိသင့်တာနဲ့ click state လို browser မှာပဲလုပ်နိုင်တာကို ခွဲတတ်ရင် architecture ဆုံးဖြတ်ရ လွယ်သွားပါတယ်။

နားလည်ထားရမယ့် အချက်

Page နဲ့ Layout တွေက default အားဖြင့် Server Components ဖြစ်ပါတယ်။ Server Component က data source အနီးမှာ async/await သုံးနိုင်ပြီး secret ကို browser မပို့ပါဘူး။ useState၊ useEffect၊ event handler၊ window သို့မဟုတ် localStorage လိုရင် file ထိပ်မှာ use client ထည့်ပါ။ Client boundary တစ်ခုထည့်လိုက်ရင် အဲဒီ file ရဲ့ import tree လည်း client bundle ထဲဝင်တာကြောင့် interactive leaf ကိုသာ သေးသေးခွဲထားပါ။

အတူတူ စမ်းရေးကြည့်မယ်

tsx
// app/page.tsx — Server Component
import { Counter } from "./counter";
import { getNoteCount } from "@/lib/notes";

export default async function Page() {
  const count = await getNoteCount();
  return <Counter initialCount={count} />;
}

// app/counter.tsx — Client Component
"use client";
import { useState } from "react";

export function Counter({ initialCount }: { initialCount: number }) {
  const [count, setCount] = useState(initialCount);
  return <button onClick={() => setCount(count + 1)}>{count}</button>;
}

Code က ဘယ်လိုအလုပ်လုပ်သလဲ

Page က server မှာ note count ယူပြီး Counter ကို number prop အဖြစ်ပို့ပါတယ်။ Counter တစ်ခုတည်းမှာ state နဲ့ click handler ရှိလို့ browser JavaScript လိုအပ်ပါတယ်။ Page တစ်ခုလုံးကို use client လုပ်စရာမလိုပါဘူး။

You should see
Server မှရလာသော initial count ပေါ်ပြီး button နှိပ်တိုင်း browser မှာ တိုးမည်။

၅ မိနစ် စမ်းကြည့်

Server Component profile page တစ်ခုနဲ့ follow button Client Component တစ်ခု ခွဲရေးပါ။

Next.js — Server and Client ComponentsNext.js

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Hook တစ်ခုလိုတာကြောင့် page တစ်ခုလုံးကို use client လုပ်ခြင်း
  • Database connection သို့မဟုတ် secret value ကို Client Component ထဲ import လုပ်ခြင်း

လေ့ကျင့်ခန်း

Server Component profile page တစ်ခုနဲ့ follow button Client Component တစ်ခု ခွဲရေးပါ။

You'll know it worked when: Server မှရလာသော initial count ပေါ်ပြီး button နှိပ်တိုင်း browser မှာ တိုးမည်။

Server Component နှင့် Client Component | Thuta Learning