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

Streaming နှင့် Suspense

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

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

  • Blocking render ကို သတိပြုရန်
  • Suspense boundary ထားရန်
  • Meaningful loading fallback ရေးရန်

Dashboard မှာ user profile ကမြန်ပေမယ့် analytics ကနှေးတယ်ဆိုပါစို့။ Analytics ပြီးမှ page တစ်ခုလုံးပြရင် user က အလွတ် screen ကိုစောင့်ရပါတယ်။ Streaming က အဆင်သင့်အပိုင်းကို အရင်ပို့ပြီး နှေးတဲ့အပိုင်းကို နောက်မှဖြည့်ပေးပါတယ်။

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

Suspense boundary က async component ကို fallback နဲ့ wrap လုပ်ပါတယ်။ Server က page shell ကိုအရင်ပို့ပြီး component data ပြီးလာတဲ့အခါ stream နဲ့ update လုပ်ပါတယ်။ loading.tsx က route အပြည့်အတွက်ကောင်းပြီး Suspense က page အတွင်း အပိုင်းငယ်တစ်ခုအတွက် ပိုတိကျပါတယ်။ Fallback က loading ဆိုတဲ့စာတစ်ကြောင်းထက် နောက်ပေါ်မယ့် UI အရွယ်နဲ့တူတဲ့ skeleton ဖြစ်ရင် layout shift နည်းပါတယ်။

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

tsx
import { Suspense } from "react";

async function SlowNotes() {
  const notes = await getSlowNotes();
  return notes.map((note) => <article key={note.id}>{note.title}</article>);
}

export default function NotesPage() {
  return (
    <main>
      <h1>မှတ်စုများ</h1>
      <Suspense fallback={<p>မှတ်စုစာရင်း ဖွင့်နေသည်…</p>}>
        <SlowNotes />
      </Suspense>
    </main>
  );
}

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

NotesPage heading ကချက်ချင်းပေါ်ပြီး SlowNotes သာ Suspense ထဲစောင့်ပါတယ်။ Promise ကို parent မှာမ await ထားတာကြောင့် streaming ဖြစ်နိုင်ပါတယ်။

You should see
Heading အရင်ပေါ်ပြီး loading fallback နောက်တွင် note list ဝင်လာမည်။

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

Page တစ်ခုမှာ profile နဲ့ activity list နှစ်ခုရေးပြီး activity list ကိုသာ Suspense နဲ့ stream လုပ်ပါ။

Next.js — Fetching DataNext.js

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

  • Data promise ကို Suspense အပြင်မှာ await လုပ်ပြီး streaming အခွင့်အရေးပျောက်စေခြင်း
  • အရွယ်မတူလွန်းသော fallback ကြောင့် layout ခုန်စေခြင်း

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

Page တစ်ခုမှာ profile နဲ့ activity list နှစ်ခုရေးပြီး activity list ကိုသာ Suspense နဲ့ stream လုပ်ပါ။

You'll know it worked when: Heading အရင်ပေါ်ပြီး loading fallback နောက်တွင် note list ဝင်လာမည်။

Streaming နှင့် Suspense | Thuta Learning