1. ความเข้าใจเกี่ยวกับ Component ใน Alpine.js
ใน Alpine.js, Component คือกลุ่มของ HTML, JavaScript, และ State ที่ทำงานร่วมกันใน Element เดียวโดยใช้ x-data เป็นตัวกำหนด State และจัดการพฤติกรรมของ Component นั้นๆ
x-data: ใช้สำหรับกำหนด State ของ Componentx-text: ใช้เพื่อแสดงค่าจาก State ในรูปแบบข้อความ
2. การสร้าง Component เบื้องต้น
ตัวอย่าง: การใช้ x-data และ x-text
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Alpine.js Component Example</title>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/cdn.min.js" defer></script>
</head>
<body>
<div x-data="{ message: 'Hello, Alpine!' }">
<h1 x-text="message"></h1>
</div>
</body>
</html>
คำอธิบายตัวอย่าง
x-data:- กำหนด State เริ่มต้นในรูปแบบ Object เช่น
{ message: 'Hello, Alpine!' } messageจะเป็นตัวแปรที่ใช้ใน Component
- กำหนด State เริ่มต้นในรูปแบบ Object เช่น
x-text:- ใช้แสดงข้อความของตัวแปร
messageบนหน้าจอ
- ใช้แสดงข้อความของตัวแปร
เมื่อโหลดหน้าเว็บ ข้อความ “Hello, Alpine!” จะแสดงใน <h1> โดยตรง
3. การเพิ่มปฏิสัมพันธ์ใน Component
เพิ่มการเปลี่ยนแปลงค่า State ด้วยการจับ Event เช่น @click:
<div x-data="{ message: 'Hello, Alpine!' }">
<h1 x-text="message"></h1>
<button @click="message = 'You clicked me!'">Click Me</button>
</div>
การทำงาน:
- เมื่อผู้ใช้คลิกปุ่ม
Click Me, ค่าในmessageจะเปลี่ยนเป็น “You clicked me!” และข้อความใน<h1>จะอัปเดตทันที
4. การปรับใช้ในสถานการณ์จริง
ตัวอย่าง: นับจำนวนคลิก
<div x-data="{ count: 0 }">
<h1 x-text="'Count: ' + count"></h1>
<button @click="count++">Increase</button>
</div>
การทำงาน:
countคือ State ที่เริ่มต้นที่ 0- เมื่อคลิกปุ่ม ค่า
countจะเพิ่มขึ้นทีละ 1
5. ข้อดีของการใช้ x-data และ x-text
- ใช้งานง่ายและโค้ดกระชับ
- ไม่ต้องเขียน JavaScript แยกจาก HTML
- State และ DOM ผูกกันโดยตรง
สรุป
ในบทนี้ คุณได้เรียนรู้วิธีสร้าง Component แรกใน Alpine.js โดยใช้ x-data เพื่อกำหนด State และ x-text เพื่อแสดงค่า ในบทถัดไป เราจะเรียนรู้วิธีจัดการ Event และผูกค่ากับ Attribute ต่าง ๆ!