การเรียกใช้งาน RESTful API ด้วย React

โจทย์ : มีเว็บเดิมอยู่ แต่อยากใช้ react บางส่วน ทำได้ไหม  (ที่จริงเป็นโจทย์ที่ผมเจอเองนะครับ)

ถ้าลองเข้าเว็บ https://facebook.github.io/react/  จะเจอข้อความ

แปลได้ว่า React คือ javascript library สำหรับสร้าง user interfaces นั่นเอง ดีไม่ดียังไง อ่าน นี่ดีกว่าครับ

react-คุ้มไหมต้องเรียนรู้มัน

ก่อนเขียน react เราต้องกลับหัวความคิดก่อนนิดหน่อยครับ   ปกติจะเขียน javascript แทรกลงใน file HTML หรือ PHP

แต่ในยุคที่ javascript ครองโลก ท่านผู้นำ (javascript) ต้องมาก่อน  ดังนั้น เราต้องระลึกเสมอว่า กำลัง เขียน  javascript แล้วเอา HTML ยัดใส่ไว้เป็นส่วนหนึ่งของ javascript เท่านั้น

พร้อมแล้ว เอาแบบง่ายสุดนะครับ  มาเริ่มกันเลยครับ

1. เพิ่ม script ลงไปในส่วน head ของ html หรือ php ไฟล์

แต่ละตัวทำอะไรบ้าง

react คือ core react library

react-dom คือ library ที่ช่วยในการ render virtual dom (Document Object Model)

babel คือ library เอาไว้แปลง   ES6 -> ES5  ซึ่งมัน support ตัว JSX (JavaScript syntax extension) ด้วย ทำให้สามารถเขียน HTML (ไม่ใช่ html จริงๆ แต่เป็น virtual dom แต่ code เหมือน html 55+) ใน react ได้ง่ายขึ้น

2. เพิ่ม div มา 1 ตัวสำหรับใช้กับ react

ในที่นี้จะใช้ข้อมูล posts  Fake Online REST API จากเว็บ https://jsonplaceholder.typicode.com/

 

3. เขียนส่วน babel script

สังเกตตรง type ค่าจะเป็น text/babel ครับ

หน้าที่ของ babel คือ แปลง code ส่วนนี้ จาก ES6 -> ES5  (ทำไมต้องแปลงก็เพราะ Browser  ยังไม่ support ES6 ครับ)

สร้าง Posts Component   สังเกตว่าใช้ extends ได้  แสดงว่า code ส่วนนี้ เป็น ES6 ครับ

จากนั้น ก็สั่ง render ด้วย ReactDOM โดยเอา Posts Component มา binding กับ div posts ที่สร้างไว้

ลอง run จะได้ผลลัพธ์แบบนี้ครับ

4. เพิ่ม state posts , fetch    และการอ่านข้อมูล state posts

1.เพิ่ม state  posts  ใน  constructor

2.เพิ่ม การ fetch ข้อมูล RESTfull API จาก https://jsonplaceholder.typicode.com/posts ใน componentDidMount

3.เพิ่มการอ่านข้อมูลจาก state posts

**componentDidMount  คืออะไร อ่านเพิ่ม -> react-lifecycle แต่ละอันมีหน้าที่อย่างไร

 

ก็จะได้ผลลัพธ์แบบนี้ครับ

 

5. เพิ่ม style

เพิ่ม style=”color:blue” เข้า ไป ผลคือ run แล้วไม่มีอะไร

ไปดู error พบว่า react-dom error

 

ที่เป็นแบบนี้เพราะ เราไม่ได้กำลังเขียน HTML แบบเดิมๆ อยู่ครับ สิ่งที่เราเขียนใน react component ล้วนเป็น Virtual DOM

เพราะฉะนั้นเวลาเขียน sytle ก็ต้องเขียนแบบ reactๆ ดังนี้ครับ

สร้างเสร็จก็เอาไปใช้แบบนี้ครับ


เราก็จะสามารถใส่ style ให้กับ React

 

code เต็มๆ ครับ

 

จบแล้วครับ หวังว่าจะมีประโยชน์นะครับ
ถ้าผมเข้าใจผิดส่วนไหนก็แจ้งมาได้เลยครับ fb