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

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

ลองดึงข้อมูลจาก https://jsonplaceholder.typicode.com/posts มาแสดง Title กับ Body ของแต่ละโพสต์ก่อน เดี๋ยว Mission ถัดไปค่อยเพิ่ม Loading/Error/Empty State ให้ครบ
เป้าหมายของ Mission นี้: ดึงโพสต์จริงจาก API มาแสดง Title และ Body
app/posts/page.tsxhttps://jsonplaceholder.typicode.com/poststitle และ body ของแต่ละโพสต์// app/posts/page.tsx
"use client";
import { useState, useEffect } from "react";
type Post = { id: number; title: string; body: string };
export default function PostsPage() {
const [posts, setPosts] = useState<Post[]>([]);
useEffect(() => {
async function loadPosts() {
const response = await fetch("https://jsonplaceholder.typicode.com/posts");
const data = await response.json();
setPosts(data);
}
loadPosts();
}, []);
return (
<ul className="flex flex-col gap-4 p-8">
{posts.map((post) => (
<li key={post.id} className="rounded-lg border p-4">
{/* TODO: แสดง post.title และ post.body */}
</li>
))}
</ul>
);
}
ลองแก้ในเวิร์กสเปซด้านล่างให้ผ่านก่อน (แก้ที่ // TODO) เห็นผลทันทีใน Live Preview — แล้วค่อย
ก๊อปโค้ดเดียวกันไปวางใน app/posts/page.tsx ของโปรเจคจริง เปิดดูที่ localhost:3000/posts
Mission ถัดไปจะเพิ่ม Loading/Error/Empty State ให้ครบ