บทที่ 4 ⏱ 15 นาที

ข้อมูลเปลี่ยนตลอด — Auto-refresh & Loading States

ตอนนี้แอปของคุณดึงข้อมูลจริงได้ แสดงผลดี และให้ผู้ใช้เลือกสิ่งที่อยากดูได้แล้ว

แต่ยังมีอีกสองอย่างที่ทำให้แอปดู “ยังไม่ใช่ของจริง” อยู่บ่อยมาก: หนึ่งคือข้อมูลอาจเก่าไปแล้ว สองคือเวลารอโหลด แอปไม่บอกอะไรเลย


ถ้าร้านเงียบไปเฉยๆ คนก็ไม่รู้ว่ากำลังทำอาหารอยู่หรือเปล่า

กลับมาที่ภาพร้านอาหารอีกครั้ง

ถ้าคุณสั่งอาหารไป แล้วพนักงานหายไปเงียบๆ โดยไม่พูดอะไรเลย คุณจะเริ่มไม่แน่ใจทันทีว่า ร้านได้รับออเดอร์หรือยัง ลืมหรือเปล่า หรือระบบค้างไปแล้ว

แอปก็เหมือนกัน

เวลามันกำลังไปถามข้อมูลจากภายนอก คนใช้ควรรู้ว่า กำลังโหลดอยู่ ไม่ใช่ปล่อยให้หน้าจอค้างนิ่งเหมือนไม่มีอะไรเกิดขึ้น

นี่คือ loading state (สถานะกำลังโหลด)

และอีกเรื่องคือ ถ้าข้อมูลเปลี่ยนได้เรื่อยๆ คนใช้ก็ควรมีทางกดดูข้อมูลล่าสุด หรือแอปควรรีเฟรชให้เป็นระยะอย่างเหมาะสม


แอปจริงไม่ได้มีแค่คำตอบ แต่ต้องมี “จังหวะระหว่างรอ” ด้วย

บทก่อนๆ เราโฟกัสที่สิ่งที่แอปแสดงเมื่อข้อมูลมาแล้ว

บทนี้เราจะใส่ใจช่วงระหว่างทางด้วย เพราะแอปจริงไม่ได้มีแต่ตอนที่ข้อมูลพร้อม มันมีช่วงที่กำลังรอ กำลังอัปเดต และกำลังเอาของใหม่มาเสิร์ฟด้วย

ถ้าแอปบอกจังหวะพวกนี้ดี คนใช้จะรู้สึกว่าแอปเชื่อถือได้มากขึ้นทันที

💡 แอปจริงควรตอบสนองตลอดเวลา

แม้ตอนข้อมูลยังไม่มา คนใช้ก็ควรรู้ว่าแอปกำลังทำอะไรอยู่ อย่างน้อยที่สุดคือบอกว่า “กำลังโหลด” หรือ “อัปเดตล่าสุดเมื่อ…”


สิ่งที่เราจะเพิ่มในบทนี้

แอปเช็คค่าเงินของคุณควรมี 3 อย่างนี้

  • loading state ที่เห็นชัดตอนกำลังดึงข้อมูล
  • ปุ่ม refresh สำหรับขอข้อมูลล่าสุดอีกครั้ง
  • เวลาอัปเดตล่าสุดที่อ่านง่าย

ถ้าต้องการอีกขั้น สามารถให้แอปรีเฟรชเองเป็นระยะได้ด้วย แต่หัวใจของบทนี้ไม่ใช่ความซับซ้อน หัวใจคือคนใช้ต้องไม่งงว่าตอนนี้ข้อมูลใหม่หรือเก่า และแอปกำลังทำอะไรอยู่


ลงมือทำ — เพิ่ม loading และ refresh

เปิดโปรเจกต์เดิมจากบทที่แล้ว แล้วส่ง prompt นี้

ปรับแอปเช็คอัตราแลกเปลี่ยนให้ดูเป็นแอปจริงมากขึ้น

- เพิ่ม loading state ที่เห็นชัดขณะกำลังดึงข้อมูลหรือกำลังอัปเดต
- เพิ่มข้อความหรือ spinner ที่บอกว่ากำลังโหลด
- เพิ่มปุ่ม refresh เพื่อให้ผู้ใช้กดอัปเดตข้อมูลล่าสุดได้เอง
- แสดงเวลาอัปเดตล่าสุดให้อ่านง่าย
- ถ้าเหมาะสม ให้รีเฟรชข้อมูลอัตโนมัติเป็นระยะ โดยไม่ทำให้หน้าจอดูวุ่นวาย
- รักษา layout และ design เดิมไว้

ไม่เปลี่ยนฟังก์ชันหรือ design ที่มีอยู่แล้ว

prompt นี้สื่อสารชัดว่าคุณไม่ได้ต้องการข้อมูลใหม่ชนิดใหม่

คุณต้องการ “พฤติกรรมของแอป” ที่ดีขึ้นตอนทำงานกับข้อมูลสด


ดูผลลัพธ์ — แล้วลองใช้งานแบบตั้งใจรอ

หลังจาก AI ปรับเสร็จ ลองใช้งานแบบนี้

  1. เปลี่ยนสกุลเงินหรือจำนวนเงิน 1 ครั้ง
  2. ดูว่ามีสถานะกำลังโหลดขึ้นมาหรือไม่
  3. รอจนข้อมูลใหม่แสดง
  4. กดปุ่ม refresh อีก 1 ครั้ง
  5. ดูว่าเวลาอัปเดตล่าสุดขยับหรือไม่

สิ่งที่คุณกำลังตรวจไม่ใช่แค่ “ข้อมูลมาไหม”

แต่คือ “ระหว่างที่ยังไม่มา แอปสื่อสารกับคนใช้อย่างไร”

ถ้าคนใช้รู้ว่าแอปกำลังทำงานอยู่ และรู้ว่าข้อมูลล่าสุดอัปเดตเมื่อไร แปลว่าแอปรอบนี้เริ่มมีมารยาทแบบแอปจริงแล้ว

✅ ตอนนี้แอปไม่ปล่อยให้คนรอแบบงงๆ แล้ว

ถ้าคุณเห็น loading state, กด refresh ได้ และดูเวลาอัปเดตล่าสุดได้ แปลว่าแอปของคุณไม่ใช่แค่ดึงข้อมูลได้ แต่เริ่มดูน่าเชื่อถือขึ้นมากแล้ว


ถ้ายังดูค้างหรือไม่ชัดว่ากำลังโหลด ให้บอกเพิ่มแบบนี้

บางครั้ง AI อาจเพิ่มการโหลดจริง แต่คนใช้ยังมองไม่ออกว่ากำลังเกิดอะไรขึ้น

ถ้าเป็นแบบนั้น ลองส่งต่อแบบนี้

ตอนนี้แอปดึงข้อมูลได้ แต่ยังไม่ชัดตอนกำลังโหลด
ช่วยทำให้ loading state เห็นได้ชัดขึ้น
- แสดง spinner หรือข้อความกำลังโหลดในตำแหน่งที่ผู้ใช้เห็นได้ง่าย
- ระหว่างโหลด อย่าให้หน้าจอดูเหมือนค้าง
- หลังโหลดเสร็จ ให้กลับมาแสดงผลลัพธ์ตามปกติ
ไม่เปลี่ยนฟังก์ชันหรือ design ที่มีอยู่แล้ว
⚠️ อย่าทำ loading จนรบกวน

loading state ควรช่วยให้คนสบายใจ ไม่ใช่ดึงความสนใจเกินไป ถ้า spinner ใหญ่มาก กระพริบแรง หรือขึ้นทุกครั้งแบบน่ารำคาญ ก็ต้องปรับให้นุ่มลง


สำหรับแอปของคุณเอง

แนวคิดนี้ใช้ได้กับทุกแอปที่ดึงข้อมูลจาก API

  • แอปอากาศ: ตอนเปลี่ยนเมือง ควรมีสถานะกำลังโหลด
  • แอปค้นหาข้อมูล: ตอนกดค้นหา ควรมีสัญญาณว่าแอปกำลังไปหาคำตอบ
  • แอปวันหยุด: ตอนเปลี่ยนประเทศหรือปี ควรรีเฟรชข้อมูลใหม่อย่างชัดเจน
  • แอปข้อมูลเกม: ตอนเลือกตัวละครใหม่ ควรมีช่วงรอที่ไม่ทำให้หน้าจอดูพัง

คำถามสำคัญคือ:

ถ้าคนใช้กดบางอย่างแล้วต้องรอ แอปของคุณบอกเขาชัดพอหรือยังว่าตอนนี้กำลังเกิดอะไรขึ้น

💡 ข้อมูลสดต้องมีคำว่า 'ล่าสุด' เสมอ

ถ้าข้อมูลจากภายนอกเปลี่ยนได้ คนใช้มักอยากรู้ทันทีว่าอันที่กำลังเห็นอยู่นี่ใหม่แค่ไหน แค่มีคำว่า “อัปเดตล่าสุด” ก็ช่วยความรู้สึกเชื่อถือได้เยอะมาก


วันนี้คุณเพิ่มสิ่งที่คนมักไม่เห็น แต่ทุกคนรู้สึกได้

ผู้ใช้บางคนอาจไม่ได้พูดออกมาว่า loading state ดี หรือปุ่ม refresh มีประโยชน์

แต่พวกเขาจะรู้สึกได้ทันทีว่า แอปนี้ดูนิ่งกว่า น่าเชื่อถือกว่า และไม่ทำให้ต้องเดาเองตลอดเวลาว่าเกิดอะไรขึ้น

นี่คือหนึ่งในความต่างระหว่าง demo ที่พอใช้ได้ กับแอปที่เริ่มเหมือนของจริง


คุณเพิ่งทำอะไรสำเร็จไปแล้วบ้าง

  • คุณเข้าใจแล้วว่าข้อมูลสดต้องมีทั้ง “คำตอบ” และ “ช่วงระหว่างรอ”
  • คุณเพิ่ม loading state ที่บอกคนใช้ว่าแอปกำลังทำงานอยู่
  • คุณเพิ่ม refresh และเวลาอัปเดตล่าสุดเพื่อให้คนใช้รู้ว่าข้อมูลใหม่แค่ไหน
  • แอปของคุณเริ่มมีพฤติกรรมแบบแอปจริงที่คนใช้งานได้อย่างมั่นใจมากขึ้น

บทต่อไป เราจะพาแอปไปเจอสถานการณ์จริงอีกแบบที่ทุกแอปต้องเจอ: ตอนที่บริการภายนอกไม่ตอบ ช้า หรือพัง และแอปของคุณต้องไม่พังตามไปด้วย

🎉
ยินดีด้วย! คุณทำสำเร็จแล้ว

แอปของคุณเริ่มมีมารยาทแบบแอปจริงแล้ว — บอกได้ว่ากำลังโหลด และรีเฟรชข้อมูลใหม่ได้ 🎉