Skip to content
GitHub

React Server Components (RSC) & Data Fetching

React Server Components (RSC) vs. Client Components

Section titled “React Server Components (RSC) vs. Client Components”

Next.js App Router တွင် Component တိုင်းသည် Default အားဖြင့် Server Component ဖြစ်ပါတယ်။

အင်္ဂါရပ်Server Components (Default)Client Components ('use client')
Run ရာနေရာServer ပေါ်တွင်သာ Run သည် (Zero JS bundle to client)Browser (Client) ပေါ်တွင် Hydrate ဖြစ်သည်
Direct DB AccessDatabase / API Secrets များကို တိုက်ရိုက် ခေါ်ယူနိုင်သည်Direct DB Access မရပါ (API / Action မှတစ်ဆင့် ခေါ်ရသည်)
React HooksuseState, useEffect, onClick သုံး၍ မရပါuseState, useEffect, onClick သုံး၍ ရပါသည်
SecurityAPI Keys များ Leak မဖြစ်ဘဲ လုံခြုံသည်Bundle ထဲ ပါသဖြင့် Public ဖြစ်နိုင်သည်

1. Server Component တွင် Data Fetching ပြုလုပ်ပုံ

Section titled “1. Server Component တွင် Data Fetching ပြုလုပ်ပုံ”

async/await ကို Component တိုက်ရိုက် တွင် ရေးသားနိုင်ပါတယ်:

// app/users/page.tsx (Server Component)
interface User {
id: number;
name: string;
}
export default async function UsersPage() {
// Server ဘက်မှ တိုက်ရိုက် Fetching ပြုလုပ်ခြင်း
const res = await fetch("https://jsonplaceholder.typicode.com/users", {
next: { revalidate: 3600 }, // 1 နာရီတိုင်း Cache ပြန်လည် Revalidate လုပ်မည်
});
const users: User[] = await res.json();
return (
<div>
<h1>User List</h1>
<ul>
{users.map((user) => (
<li key={user.id}>{user.name}</li>
))}
</ul>
</div>
);
}

2. ဘယ်အချိန်မှာ 'use client' ကို သုံးရမလဲ?

Section titled “2. ဘယ်အချိန်မှာ 'use client' ကို သုံးရမလဲ?”

Interactive ဖြစ်သော Event Handler များ၊ Form Input State များ သို့မဟုတ် Browser APIs (localStorage, window) များကို သုံးလိုပါက File ၏ အပေါ်ဆုံးတွင် 'use client' ထည့်သွင်းပေးရပါမည်:

"use client";
import { useState } from "react";
export default function Counter() {
const [count, setCount] = useState(0);
return (
<button onClick={() => setCount(count + 1)}>
Clicked {count} times
</button>
);
}