React เบื้องต้น
ไลบรารีสร้างหน้าเว็บโต้ตอบที่นิยมที่สุด
React คืออะไร?
React เป็นไลบรารี JavaScript (จาก Meta) สำหรับสร้าง ส่วนติดต่อผู้ใช้ (UI) เป็นวิธีทันสมัยในการทำ Frontend ที่ใช้กันแพร่หลายที่สุด
เปรียบเทียบกับที่เรียนมา:
- HTML/CSS/JS → เขียนแยกหลายไฟล์ จัดการ DOM เอง
- React → แบ่ง UI เป็น component จัดการให้อัตโนมัติ
แนวคิดหลัก: Component
Component = ชิ้นส่วน UI ที่นำกลับมาใช้ซ้ำได้ เหมือน "บล็อกต่อเลโก้" — แต่ละบล็อกประกอบเป็นหน้าเว็บ
หน้าเว็บ
├── Navbar (component)
├── ProductCard (component) × หลายตัว
└── Footer (component)
JSX — เขียน HTML ใน JavaScript
React ใช้ JSX ซึ่งเป็นการเขียน HTML ปนอยู่ใน JS:
function Welcome() {
return <h1>สวัสดี React!</h1>;
}
มันดูแปลกตอนแรก แต่ทำให้เราเขียน UI กับ logic อยู่ด้วยกันได้
Component แรกของคุณ
function ProductCard() {
return (
<div className="card">
<h2>กาแฟลาเต้</h2>
<p>80 บาท</p>
<button>ซื้อ</button>
</div>
);
}
⚠️ ใช้
classNameไม่ใช่class(เพราะclassเป็นคำสงวนใน JS)
แล้วนำไปใช้:
function App() {
return (
<div>
<ProductCard />
<ProductCard />
</div>
);
}
รับข้อมูล: Props
ส่งข้อมูลเข้า component เหมือน argument ของฟังก์ชัน:
function ProductCard(props) {
return (
<div>
<h2>{props.name}</h2>
<p>{props.price} บาท</p>
</div>
);
}
// ใช้งาน
<ProductCard name="กาแฟ" price={80} />
<ProductCard name="ชา" price={60} />
หรือ destructuring สั้นกว่า:
function ProductCard({ name, price }) {
return <p>{name}: {price} บาท</p>;
}
State — ข้อมูลที่เปลี่ยนแล้ว UI อัปเดต
useState เป็น hook ที่เก็บข้อมูลที่ เปลี่ยนได้: เมื่อค่าเปลี่ยน React จะ วาดหน้าใหม่ ให้อัตโนมัติ
import { useState } from "react";
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>นับ: {count}</p>
<button onClick={() => setCount(count + 1)}>เพิ่ม</button>
<button onClick={() => setCount(count - 1)}>ลด</button>
</div>
);
}
useState(0)→ ค่าเริ่มต้น 0 ส่งคืน[ค่าปัจจุบัน, ฟังก์ชันเปลี่ยนค่า]setCount(...)→ เปลี่ยนค่า → React อัปเดต UI ให้เลย
เริ่มโปรเจกต์ React: Vite
วิธีเริ่มเร็วที่สุดในปัจจุบันคือใช้ Vite:
npm create vite@latest my-react-app -- --template react
cd my-react-app
npm install
npm run dev
เปิด http://localhost:5173 — เห็นแอป React! แก้ไฟล์ใน src/ แล้วเซฟ เห็นผลทันที
เรียก API ใน React: useEffect
ดึงข้อมูลจาก Backend ที่สร้างไว้:
import { useState, useEffect } from "react";
function ProductList() {
const [products, setProducts] = useState([]);
useEffect(() => {
fetch("http://localhost:3000/products")
.then(res => res.json())
.then(data => setProducts(data));
}, []); // [] = ทำครั้งเดียวตอนโหลด
return (
<ul>
{products.map(p => (
<li key={p.id}>{p.name} — {p.price} บาท</li>
))}
</ul>
);
}
ทำไมต้อง React?
- reuse: component ใช้ซ้ำได้
- auto-update: เปลี่ยน state → UI อัปเดตเอง (ไม่ต้องจับ DOM เอง)
- ecosystem: มีไลบรารีเสริมเยอะมาก
- ตลาดงาน: บริษัทส่วนใหญ่ใช้ React
💡 เมื่อเก่ง React แล้ว ขยายไป React Native (ทำแอปมือถือ) ได้ด้วย
สรุป
| แนวคิด | สรุป |
|---|---|
| Component | ชิ้น UI ที่ใช้ซ้ำได้ |
| JSX | HTML ใน JavaScript |
| Props | ข้อมูลที่ส่งเข้า component |
| useState | ข้อมูลที่เปลี่ยนได้ → UI อัปเดต |
| useEffect | ทำงาน side-effect (เช่น เรียก API) |
บทหน้า: รวมทุกอย่างเป็น โปรเจกต์ Fullstack ของคุณ 🏆
อ่านจบแล้ว? ทำเครื่องหมายว่าเสร็จเพื่อบันทึกความคืบหน้า
แบบทดสอบ
ตอบให้ครบแล้วกด “ตรวจคำตอบ” เพื่อเช็คความเข้าใจ
1. React เป็นอะไร?
2. ข้อได้เปรียบหลักของ ‘component’ ใน React คือ?
3. hook ที่ใช้เก็บข้อมูลที่เปลี่ยนได้ใน React คือ?
กำลังโหลด…