
กำลังโหลด...

กำลังโหลด...

ระหว่างรอข้อมูลจาก API ผู้ใช้ต้องเห็นอะไรสักอย่าง ไม่ใช่หน้าจอว่างเปล่า แล้วถ้า โหลดพังก็ต้องรู้ตัวด้วย มาดู Loading กับ Error State กันก่อน
เป้าหมายของ Mission นี้: จัดการ Loading State และ Error State ระหว่างเรียก API
stateDiagram-v2
[*] --> Loading: เริ่ม fetch
Loading --> Success: โหลดสำเร็จ
Loading --> Error: โหลดพัง
Success --> [*]
Error --> [*]
การดึงข้อมูลใช้เวลา (แม้จะแค่เสี้ยววินาที) — ถ้าไม่โชว์อะไรเลย ผู้ใช้จะคิดว่าเว็บค้าง ต้องมี state บอกว่า "กำลังโหลดอยู่นะ"
const [loading, setLoading] = useState(true);
เน็ตอาจหลุด หรือ API อาจพังได้เสมอ — ต้องดักจับด้วย try/catch แล้วเก็บ error ไว้ใน state
"use client";
import { useState, useEffect } from "react";
export function PostList() {
const [posts, setPosts] = useState([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState("");
useEffect(() => {
async function loadPosts() {
try {
const response = await fetch("https://jsonplaceholder.typicode.com/posts");
const data = await response.json();
setPosts(data);
} catch (err) {
setError("โหลดข้อมูลไม่สำเร็จ");
} finally {
setLoading(false);
}
}
loadPosts();
}, []);
if (loading) return <p>กำลังโหลด...</p>;
if (error) return <p>{error}</p>;
return (
<ul>
{posts.map((post) => (
<li key={post.id}>{post.title}</li>
))}
</ul>
);
}
| คำศัพท์ | ความหมาย |
|---|---|
| Loading State | สถานะ "กำลังโหลดอยู่" ระหว่างรอข้อมูล |
| Error State | สถานะ "โหลดไม่สำเร็จ" เมื่อเกิดปัญหา |
try/catch/finally |
โครงสร้างดักจับ error ของ JavaScript |