มีอะไรใหม่ใน React Native 0.76

  1. React Native 0.76 มาพร้อมกับ New Architecture ที่เขียนใหม่ทั้งหมด โดย default
    ซึ่งมาพร้อมกับฟีเจอร์ของ React แบบ full support (เมื่อก่อนไม่ครบ) ไม่ว่าจะเป็น Suspense, useLayoutEffect, Transitions เป็นต้น
  2. มาพร้อมกับ React Native DevTools ใหม่ ช่วยให้การ Debug App ของเราดีขึ้นมากๆ
  3. ปรับปรุง Metro (JavaScript bundler) ใหม่ช่วยให้ทำงานเร็วขึ้น 15 เท่า
  4. เพิ่ม style props ให้กับ boxShadow และ filter ที่ดีขึ้น ให้ทำงานเหมือนกับเขียน web แม้มีข้อจำกัดบ้าง แต่ถ้าใครเขียนเว็บอยู่แล้วใช้ได้อย่างสบาย
  5. ขนาดของ App ที่ build android ลดลงถึง 20% และเวลาเริ่มต้น App เฉลี่ยลดลงประมาณ 8% อีกด้วย
  6. ปรับขั้นต่ำ iOS เป็น 15.1 และ Android SDK เป็นเวอร์ชัน 24 (Android 7)
  7. มี Native Module และ Native Component แบบใหม่ ทุกคนสามารถเขียน Module หรือ Component ใช้เอง หรือใช้ไลบรารีภายนอกที่มีประสิทธิภาพมากขึ้น เราสามารถเขียนเรียก native interface (Synchronous access) โดยไม่ต้องมี bridge อีกต่อไป ตัวอย่างโค้ด

// Sync response from Native Module
const value = nativeModule.getValue();

// value can be a reference to a native object
nativeModule.doSomething(value);

  1. New Architecture ที่ถูกเขียนใหม่หมด แน่นอนการเอา bridge ออกไปจะทำให้แอปที่เขียนมี startup ที่เร็วขึ้น การสื่อสารระหว่าง JavaScript กับ native runtime ที่ดีขึ้น ส่งผลให้การรายงาน error ที่ชัดเจนขึ้น การ debug ก็ดีขึ้นด้วยครับ
  2. แน่นอน Meta ได้นำ New Architecture นี้ไปใช้งานจริงบน production ไม่ว่าจะเป็นแอป Facebook , Instagram และผลิตภัณฑ์อื่นๆ อีกด้วย
  3. ณ ตอนที่เขียนนี้มีไลบรารีเจ้าดังๆ รองรับ New Architecture แล้วกว่า 950 ไลบรารี ดูได้จากเว็บแหล่งรวมไลบรารีของ React Native ที่นี่ https://reactnative.directory/
  4. Expo SDK (framework) เวอร์ชัน 52 ล่าสุด รองรับ React Native เวอร์ชัน 0.76 และ New Architecture นี้เรียบร้อยแล้ว!

สุดท้าย ไม่เกี่ยวสักเท่าไหร่แต่มีข่าวว่าพนักงาน full-time ของ Flutter ถูกเลิกจ้าง แม้ Google จะยืนยันว่าไม่ทิ้ง Flutter แต่ก็มีนักพัฒนาแยกออกมาทำโครงการ Flock (fork of Flutter) มารวมตัวกันสร้างเป็น Flutter+ อนาคตของ Flutter จะเป็นอย่างไรก็ต้องรอดูกันต่อไปนะครับ

เรียน React Native กับโค้ชเอก ดูที่นี่ครับ https://codingthailand.com/react_native_2024_live/

โค้ชเอก

แนะนำ 15 ไลบรารี ของ React ที่น่าใช้ในปี 2020

1. สร้าง QRCode แบบง่าย ๆ ลองตัวนี้
▸ https://github.com/zpao/qrcode.react

.
2. สร้าง rich text editor ง่าย ๆ ด้วย React Quill
▸ https://zenoamaro.github.io/react-quill

.
3. ครอบตัดรูปภาพด้วย React Image Crop
▸ https://github.com/DominicTobias/react-image-crop

.
4. drag and drop รูปภาพ เพื่อเตรียมอัปโหลดด้วย react-dropzone
▸ https://react-dropzone.js.org/

.
5. สร้างปฏิทินกิจกรรม หรือ events calendar ด้วย react-big-calendar
▸ https://github.com/jquense/react-big-calendar

.
6. จัดการข้อมูลรูปแบบตารางสวยๆ ด้วย react-bootstrap-table2 (สำหรับคนใช้ Bootstrap)
▸ https://react-bootstrap-table.github.io/react-bootstrap-tab…

.
7. Datepicker ไว้สำหรับ input ข้อมูลแบบปฏิทิน
▸ https://github.com/Hacker0x01/react-datepicker

.
8. ทำ notification สวยๆ ปรับได้หลายแบบ ด้วย React-Toastify
▸ https://github.com/fkhadra/react-toastify

.
9. สร้าง Chart สวยๆ ด้วย Recharts
▸ https://github.com/recharts/recharts

.
10. พรีวิว pdf ด้วย React PDF viewer
▸ https://github.com/phuoc-ng/react-pdf-viewer

.
11. custom ส่วน head ของ html ง่ายๆ ด้วย React Helmet
▸ https://github.com/nfl/react-helmet

.
12. ตัวนี้สำหรับทำ drag and drop รายการต่างๆ
▸ https://github.com/atlassian/react-beautiful-dnd

.
13. ทำ input mask ด้วย React IMask Plugin
▸ https://github.com/…/imask…/tree/master/packages/react-imask

.
14. สำหรับคนที่ใช้ Redux สามารถจัดเก็บข้อมูลแบบ persist ได้ง่ายๆ เช่น localStorage เป็นต้น ด้วย Redux Persist (ไม่ต้องเขียน set, get เอง)
▸ https://github.com/rt2zz/redux-persist

.
15. สร้างตัวอย่างรอโหลดสวยๆ ด้วย react-loading-skeleton
▸ https://github.com/dvtng/react-loading-skeleton

.
ใครใช้ตัวไหนอยู่บ้าง แนะนำเพื่อนๆ ได้นะครับ

โค้ชเอก

แนะนำ React Hook Form

สำหรับคนที่เขียน React หรือ React Native อยู่ ลองใช้ไลบรารีฟอร์มตัวนี้ได้ครับ “React Hook Form”

.
ปกติคนที่เขียน React หรือ React Native น่าจะเคยใช้ Formik และ Redux Form กันมาบ้าง

วันนี้มาแนะนำอีก 1 ทางเลือกครับ และน่าจะเป็นทางเลือกใหม่ที่ดีด้วย มาดูกันว่า react-hook-form มีข้อดีอะไรบ้าง

.
1. re-render ที่่น้อยลง (ทำให้ประสิทธิภาพดีขึ้น) กว่า Formik และ Redux Form

.
2. ใช้เวลาเรียนรู้ไม่มาก เขียนโค้ดสั้นลงกว่า Formik และ Redux Form

.
3. ใช้ React Hooks

.
4. ขนาดเล็กมากแค่ 6.2KB

.
5. การทำ Validation มีทั้งแบบ built-in และหรือจะใช้ Yup ก็ได้

.
6. มีตัว Form Builder คลิกสร้างโค้ดอัตโนมัติให้เลย

.
มีใครใช้อยู่บ้างมั้ย ใครยังไม่ได้ใช้ก็ลองดูได้นะ

.
รายละเอียด => https://react-hook-form.com/

.
โค้ชเอก

4 ข้อควรรู้เกี่ยวกับ React Hooks

Hooks เป็นฟีเจอร์ใหม่ที่มาพร้อมกับ React เวอร์ชัน 16.8 เพื่อให้เราสามารถใช้งาน state และเรียกใช้ features ต่างๆ ของ React ได้ โดยที่ไม่ต้องเขียนแบบ class component ยกตัวอย่าง เช่น เราสามารถใช้ useEffect แทน componentDidMount ได้ เป็นต้น

.
ส่วนคนที่เขียน React Native ก็เขียนได้เลยนะ แต่ต้องเป็นเวอร์ชัน 0.59 ขึ้นไปครับ

.
1. แนะนำให้เขียน React Hooks สำหรับโปรเจคใหม่เลย (ในหลักสูตรใหม่ที่ผมจะเปิดสอนจะพาเขียน Hooks เป็นหลักทั้งหมดครับ แต่จะพูดถึง class component ด้วยเช่นกัน) ถ้าโปรเจคเดิมใช้แบบ class component อยู่ก็ไม่ต้องตามแก้เป็น Hooks นะครับ ใช้ของเดิมได้เลย เพราะไม่มีแผนที่จะเอา class component ออกจาก React อยู่แล้ว

.
2. ทำไมเราต้องเปลี่ยนมาเขียน Hooks ด้วย เพราะช่วยป้องกันและแก้ไขปัญหาต่างๆ เช่น

– ถ้า component เรามีขนาดใหญ่ จะทำให้การ refactor และ test โค้ดต่างๆเป็นไปได้ยาก

– แก้ปัญหาเรื่อง Logic หรือ Lifecycle ซ้ำๆ กันระหว่างแต่ละ Component

– และหากเราใช้ Pattern เช่นพวก HOC หรือ render props ที่มีความซับซ้อน จะยากมากๆ ต่อการ debug ครับ และที่สำคัญอีกอย่างคือ การเขียน Hooks ทำให้ขนาดไฟล์เราเล็กลงด้วยนะ

.
3. กฏของการเขียน Hooks มี 2 ข้อ ได้แก่ ให้เขียนและใช้ Hooks ที่ top level เท่านั้น อย่าเขียนใน loops, conditions หรือ nested functions และ ต้องเขียนเป็น function component ของ React เท่านั้นนะ ห้ามเขียนในฟังก์ชันของ javascript ปกติ ยกเว้นจะเขียน custom Hooks ครับ

.
4. สำหรับคนที่ใช้ React Router และ React Redux อยู่ ตอนนี้ก็รองรับ Hooks แล้วนะครับ และคนที่ใช้ GraphQL และ Apollo ก็เขียนได้แล้ว ลองเปลี่ยนมาเขียนได้เลยนะ

.
ใครสนใจศึกษา React Hooks ก็ตามไปดูได้นะ => https://reactjs.org/docs/hooks-intro.html

ไว้มีโอกาสจะมาเขียนให้อ่านกันอีกครับ

.
โค้ชเอก

มีอะไรใหม่ใน React 16.9.0

มาดูกันว่า React เวอร์ชันนี้ มีอะไรน่าสนใจบ้าง 🙂

.
1. กำลังจะยกเลิกคำสั่ง javascript: ที่เราใส่ใน href ของ tag <a></a> ครับ เพราะอาจเสี่ยงต่อการถูกโจมตีและความปลอดภัย (cross-site scripting) หากใครอัปเดตเวอร์ชันนี้จะมี warning ออกมาครับ อนาคตจะเอาออกแล้ว แน่นอนจะมี error แสดงเลย หากใครต้องการใช้อยู่ก็แนะนำให้ใช้ dangerouslySetInnerHTML แทนนะ

ดูเพิ่มเติมได้ที่ => http://bit.ly/2N0pJsc

.
2. ในอนาคต (เวอร์ชัน 17) จะมีการนำ lifecycle methods ออกไปทั้งหมด 3 methods ได้แก่ componentWillMount, componentWillReceiveProps, componentWillUpdate แล้วนะครับ

ถ้าในเวอร์ชันนี้ (16.9.0) ก็ยังใช้ได้แต่จะมีการแจ้งเตือนออกมา (warning) เค้าแนะนำให้เราเติมคำว่า UNSAFE_ เข้าไปด้านหน้าชื่อ methods ครับหากใครยังใช้อยู่

แต่ถ้าโปรเจคใหญ่จะมานั่งแก้เองคงไม่ไหว ก็แนะนำให้ติดตั้ง “codemod” ได้เลยครับ ด้วยคำสั่ง

npx react-codemod rename-unsafe-lifecycles

เดี๋ยวมันจัดการ rename ให้เราเอง

.
3. สามารถใช้ Profiler API สำหรับวัดประสิทธิภาพของ Web App ด้วยการเขียนโค้ดได้แล้วนะครับ (ปกติจะใช้ React DevTools) โดยต้องระบุ id และเขียน callback ที่ onRender เพื่อรับข้อมูลด้านประสิทธิภาพต่างๆ ได้

ดูเพิ่มเติมได้ที่ => http://bit.ly/2H5hzuV

.
4. ทำให้ฟังก์ชัน ReactTestUtils.act() สามารถใช้งานแบบ Asynchronous ได้ สำหรับใครที่เขียน test อยู่ก็ลองดูได้ครับ

.
อื่นๆ ลองตามไปอ่านได้ที่ blog ได้เลย => http://bit.ly/31yHnHB

.
จริงๆ แล้วใน React เวอร์ชัน 16 นี้มี features เพิ่มเข้ามาหลายอย่างครับ ไม่ว่าจะเป็น Hooks, context API, การทำ lazy loading ด้วย Suspense เป็นต้น ใครยังไม่ได้ลอง แนะนำให้ลองเอามาใช้ดูครับ

.
สุดท้ายใครอยากอัปเดตก็ง่ายๆ ครับ ลุยได้เลย

npm install –save react@^16.9.0 react-dom@^16.9.0

หรือ

yarn add react@^16.9.0 react-dom@^16.9.0

.
ลองดูนะครับ
โค้ชเอก

ศึกษา React ลองดูชีทสรุปเรียงตามนี้

สำหรับคนที่เพิ่งเริ่มต้นศึกษา React ลองดูชีทสรุปเรียงตามนี้นะครับ จะทำให้เห็นภาพรวมของ JavaScript ES6+, React และ Redux ได้เป็นอย่างดี จะได้ดูด้วยว่าเราศึกษามาถูกทางหรือเข้าใจอย่างดีแล้วหรือไม่ ลองดูครับ 

.
1. JavaScript ES6+ => https://devhints.io/es6

2. React => https://devhints.io/react

3. React และ React Redux => https://devhints.io/redux

.
อ้อ อีกอันนึงคือ patterns การเขียน React ครับ ลองเช็คดูซิว่าเราเคยเขียนหรือยังไม่เคย patterns ไหนบ้าง ดูได้ที่ => https://reactpatterns.com

.
โค้ชเอก

แนะนำ React Lifecycle Methods

สำหรับคนที่เพิ่งเขียน React หรือ React Native ใหม่ๆ เวลาอ่านเอกสารของ React เรื่อง React Lifecycle Methods อาจจะงงๆ เรื่องลำดับ และขั้นตอนการทำงานของ method แต่ละตัว แนะนำให้เข้าไปดูไดอะแกรมในเว็บนี้ได้ครับ เราสามารถคลิกเข้าไปดูรายละเอียดของแต่ละ method ได้เลย

.
รายละเอียด: http://bit.ly/2I4Ngax

โค้ชเอก