Mô-đun UI gốc trong React Native (P1)

Tram Ho

React Native đã cung cấp các thành phần cơ bản, sử dụng để xây dựng ứng dụng của mình: view, label, button v.v. Tuy nhiên, có những lúc những thành phần này không đủ.
Hướng dẫn này sẽ giới thiệu cách build custom UI có thể tương tác qua lại giữa react-native(Javascript) và native(iOS/Android).

Phần demo có sử dụng thư viện native, Objective-C, Swift 5, Xcode 11, react-native 0.61
Install require:

  • React Native CLI npm install -g react-native-cli
  • Xcode 11

Tạo ứng dụng React-native

react-native init DemoProject

Nếu sử dụng yarn/expo thì sau khi create hãy sử dụng eject để có 2 thư mục ios, và android tương ứng

react-native run-ios --simulator="iPhone Xs"
Chạy thử để đảm bảo project đã được khởi tạo thành công!

Tạo Native UI Component(iOS)

Mở thư mục ios

  • run pod install
    Sau đó mở project DemoProject.xcworkspace

Bước 1: Tạo file Main storyboard.
File → New → Storyboard

Bước 2: Tạo file MyCustomViewController.swift
File -> New -> File… -> Swift file

Lưu ý: Khi có thông báo tạo Bridging Header: chọn Create Bridging Header.

Bước 3: Tạo file ChangeViewBridge.m/h
File -> New -> File… -> Cocoa Touch Class

Vì React-Native được xây dựng để build với ObjectiveC nên chúng ta cần thực hiện vài thao tác để nó có thể chạy được với Swift.

File này sẽ sử dụng đến sau

Bước 4: Mở file DemoProject-Bridging-Header
Import các thư viện từ React(liên quan đến UIView)

Bước 5: Dựng UI và code bên native
Tạo một ViewController trong Main.storyboard đã tạo bên trên

Phần code trong file MyCustomViewController

Với mục đích demo: Chức năng của phần native sẽ là thay đổi ngẫu nhiên background color của view. Nếu cần sử dụng các framework thì cũng làm tương tự sau khi import được framework vào project

Chuyển view từ react-native sang native(iOS)

Khai func để có thể navigation view đến native

Định nghĩa func ở file AppDelegate.m

Xử lý giao tiếp giữa react-native và native

Lúc này bắt đầu xử lý file Objective-C tạo từ trước

func changeToNativeView này sẽ được gọi ở từ Javascript ở react-native

Xử lý func gọi từ file js

Sử dụng NativeModules từ react-native, gọi class ChangeViewBridge và func changeToNativeView() để push view từ react-native sang native

Tham khảo đoạn code App.js

Buid app và cùng xem kết quả


Phần 1 cũng xin tạm khép lại tại đây. Phần 2 mình sẽ hướng dẫn thêm các thuộc tính, callback bên native có thể giao tiếp được với react-natvie
Mọi thắc mắc bạn có thể để lại bình luận, hoặc contact trực tiếp với mình!

See you…

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo