Posted on Leave a comment

React Native: โค้ดที่ต้องเปลียนใน react-navigation 4.x

ไม่นานมานี้ทางทีมพัฒนา React-navigation ได้ทำการอัพเดต Node package ขอตัวเองเป็นเวอร์ชั่น 4.x ครับ

มีความยืดหยุ่นมากขึ้น แต่ก็มีการเปลี่ยนแปลงโครงสร้างของ Package เหมือนกัน ทำให้เราอาจจะต้องมา recode กันอีกรอบ

พอดีโค้ชพลเจอมาส่วนหนึ่ง ขอเอามาแชร์ไว้ในนี้

แยก Navigator ไปไว้ใน package ของตัวเอง

ยกตัวอย่างเช่น createStackNavigator ที่ปกติเราสามารถนำมาใช้จาก react-navigation ตรงๆ ได้แบบด้านล่าง

import { createStackNavigator } from 'react-navigation';

ก็มีการแยกไปที่ react-navigation-stack แทน

import { createStackNavigator } from 'react-navigation-stack';

ดังนั้นถ้าใช้ react-navigation 1.4+ แล้วต้องเปลี่ยนหน่อยนะครับ

วิธีแก้ Error: react-navigation-stack does not exist in haste module map

ซึ่งหลังจากการติดตั้ง react-navigation-stack ในโปรเจค React Native ที่ใช้ Expo ทำให้เกิด Error ดังด้านล่าง

Error: react-navigation-stack does not exist in haste module map

ให้แก้โดยรันคำสั่งด้านล่าง แล้วค่อยเริ่มใช้งาน expo start ใหม่ครับ (อ้างอิง)

expo r -c

วิธีแก้ Warning: Accessing view manager configs directly off UIManager via UIManager[‘getConstants’] is no longer supported.

แล้วสำหรับใครที่ปรับแล้ว ขึ้น warning ด้านล่างนี้ ใน Expo

Accessing view manager configs directly off UIManager via UIManager['getConstants'] is no longer supported. Use UIManager.getViewManagerConfig('getConstants') instead.

สามารถแก้ไขได้ดังนี้ครับ (อ้างอิง)

// อัพเกด expo กันก่อน
$ npm install -g expo@latest

// ลบ node_modules และ package-lock.json เพื่อความชัวร์
$ rm -rf node_modules package-lock.json

// เช็คดูว่า เรามี `react-native-gesture-handler` อยู่ไหม ถ้ามีก็ลบออก
$ cat package.json | grep react-native-gesture-handler

// ใช้ expo ติดตั้ง เวอร์ชั่นที่เหมาะสม (expo จะเซ็ตค่าไว้อยู่แล้ว
$ expo install react-native-gesture-handler

// เริ่มรันโปรเจคด้วย Expo แบบไม่โหลด cache เก่ามาใช้งาน 
$ expo start --clear

สนใจเริ่มต้นเรียนรู้ React + Redux เข้าใจง่าย ดูด้านล่างเลย

เปิดอบรม React Native สำหรับผู้เริ่มต้น

ปูพื้นฐาน React และ React Native เข้าใจง่าย, ใช้ได้จริง, เนื้อหาใช้ในการทำแอพ Enterprise ขององค์กรได้

สอบถาม หรือติดต่อจัดอบรมโทร 083-071-3373

Loading Facebook Comments ...