การใช้งาน Thailand address แบบ auto complete ในแบบฉบับ React

Prudchaya Palee
2 min readJun 27, 2021

--

สวัสดีครับสืบเนื่องจากได้ไปทดลองใช้ address auto complete ของที่อยู่ในประเทศไทยของท่านหนึ่งที่เขียนไว้ในรูปแบบ jquery แต่ประเด็นคือ dev React อย่างเราๆ ต้องการใช้งานในรูปแบบ React component ไปเลยจึงเริ่มเกิดแนวคิดอยากทำ component ไว้ใช้เองบ้างก็เลยตามไปดูใน repository ที่เขาแชร์ไว้ให้เรา

เริ่มต้นเดิมที่จากทาง Thailand address ได้เขียนไว้ในรูปแบบ jquery เอาจริงๆ เราก็สามารถใช้ jquery รวมเข้ากับ react ได้เช่นกันแต่ในเมื่อในบทความนี้เปิดหัวเรื่องมาว่าต้องเป็น React component ก็ต้องทำเป็น component สิ

พอเข้าไปดูรายละเอียดจริงๆ เราแค่ต้องการ master file ที่เป็น JSON ซึ่งก็ต้องให้เครดิตเจ้าของคุณ earthchie ที่ทำข้อมูลไว้ให้นะครับ

หลังจากที่มีข้อมูล master แล้วพระเอกของเราก็คือ jqljs โดยการทำงานของมันก็คือ SQL นั่นแหละครับแต่ source มันเป็น ​JSON data นั่นเองครับ

เมื่อกล่าวถึงเครื่องมือครบกันแล้วก็มาลงมือทำกันเลยครับอย่างแรกก็ create project เลยครับ โปรเจคนี้เราจะเขียนเป็น typescript นะครับ

create-react-app thailand-address --typescript
// ต่อด้วยติดตั้ง material-ui
yarn add @material-ui/core
yarn add @material-ui/lab
yarn add jqljs

เมื่อเตรียม dev dependencies เสร็จแล้วก็เข้าไปทำการ download master file ในลิ้งค์นี้ครับ จะได้เป็นไฟล์ database ใน format JSON data แล้วก็นำมาแปะไว้ในโปรเจคเราครับ

เริ่มจากสร้างตัว query ข้อมูลครับ โดยใช้ jqljs เป็นตัว query ข้อมูลจากฐานข้อมูล

จาก code เบื้องต้นเราได้ทำการ process data โดยจะมี key ในการค้นหาดังนี้

  • subDistrict : ค้นหาโดยตำบล
  • district : ค้นหาโดยอำเภอ
  • province: ค้นหาโดยจังหวัด
  • postcode: ค้นหาโดยรหัสไปรษณีย์

จากนั้นก็สร้าง Form โดยใช้ code ตามนี้เลยครับ

เมื่อทุกอย่างโอเคแล้วก็รันทดสอบผลครับ

address form input image
หน้าตา input form ก็ประมาณนี้ครับ

ทดสอบพิมพ์ค้นหาที่อยู่ก็จะมีหน้าตาออกมาประมาณนี้

เลือกรายการที่อยู่ (suggestion จากช่องที่เราพิมพ์)

สุดท้ายก็แค่เลือกว่าใช้ที่อยู่อะไรโปรแกรมก็จะเลือกไป fill input ให้ครบง่ายนิดเดียว

สุดท้ายและท้ายสุดหลายๆ การทำ auto complete ในส่วนของที่อยู่นั่นจะเพิ่มเรื่อง UX ให้กับผู้ใช้งานหรือไม่ว่าจะเป็น admin ที่ไม่ต้องคอยปวดหัวว่าผู้ใช้งานนั้นพิมพ์ข้อมูลที่อยู่ผิด หวังว่าจากตัวอย่างนี้น่าจะช่วยให้หลายๆ คนนำไปประยุกต์ใช้ได้ไม่มากก็น้อยนะครับ

สำหรับ code ตัวอย่างตามลิงค์ไป clone ใน Github ได้เลยนะจ๊ะ…..

--

--

Prudchaya Palee
Prudchaya Palee

Written by Prudchaya Palee

Developer บ้านๆที่อยากจะไปยืนในเวทีโลก

No responses yet