React Native
Đây là gì
React Native là một (khung phát triển phần mềm) mã nguồn mở, được tạo ra tại Meta, dùng để xây dựng ứng dụng di động gốc (native) bằng React và JavaScript (hoặc TypeScript). Bạn viết các component (thành phần giao diện) theo cách giống như khi làm web, nhưng chúng được render (kết xuất) thành các widget (thành phần giao diện) iOS và Android gốc thật sự trên màn hình, chứ không phải thành một trang web hiển thị bên trong ứng dụng (web view). Phần lớn code được dùng chung cho cả hai nền tảng, nhưng bạn vẫn có thể viết code gốc riêng cho từng nền tảng khi cần.
Điểm mạnh
- Một codebase (kho mã nguồn), hai nền tảng — dùng chung phần lớn logic và giao diện giữa iOS và Android.
- Dùng React, nên các lập trình viên web bắt tay vào việc rất nhanh, và hệ sinh thái (ecosystem) rất lớn.
- Render ra các component gốc thật sự, không phải web view, nên cảm giác sử dụng thực sự "native".
- Fast Refresh (làm mới nhanh) cho phản hồi gần như tức thì khi chỉnh sửa code.
- Có lối thoát hiểm: viết native module (mô-đun gốc) bằng Swift/Kotlin khi bạn gặp giới hạn.
Đánh đổi
- Hãy hình dung một người phiên dịch chuyển lời qua lại giữa hai người nói hai ngôn ngữ khác nhau: mỗi lần chuyển tiếp đều mất một chút thời gian. React Native cũng có một "cầu nối" (bridge) tương tự giữa JavaScript và code gốc, và điều này có thể gây rắc rối cho các tác vụ nhạy cảm về hiệu năng hoặc nặng về hoạt ảnh (animation).
- Các thư viện phụ thuộc gốc (native dependencies) và công cụ build có thể mong manh và nhạy cảm với phiên bản.
- Bạn vẫn cần kiến thức nền tảng (và một máy Mac để build cho iOS) cho những phần khó.
- Một số tính năng mới của hệ điều hành (OS — Operating System, phần mềm lõi của thiết bị, như iOS hay Android) sẽ chậm được hỗ trợ cho tới khi cộng đồng hoặc chính bạn viết lớp bọc (wrapper) cho chúng.
Khi nào nên dùng
Hãy chọn React Native khi bạn muốn một đội ngũ và một codebase duy nhất để phát hành ứng dụng gốc trên cả iOS và Android, đặc biệt nếu đội của bạn đã biết React. Đây là lựa chọn tốt cho các ứng dụng nội dung, thương mại điện tử, và các ứng dụng kiểu CRUD (Create, Read, Update, Delete — tạo, đọc, sửa, xóa dữ liệu).
Phù hợp với vibe coding thế nào
React Native rất thân thiện với việc lập trình có AI hỗ trợ vì về bản chất nó chỉ là React — các trợ lý AI vốn đã rất am hiểu component, hook, và prop. Hãy yêu cầu mô hình dùng TypeScript, giữ các component nhỏ gọn và không lưu trạng thái riêng (stateless) khi có thể, và kết hợp với Expo để việc build và dùng native module trở nên dễ dàng. Hãy nêu rõ ngay từ đầu các nền tảng mục tiêu và bất kỳ khả năng gốc (native capability) nào cần thiết, để code được sinh ra sử dụng đúng thư viện.
import { Text, Button, View } from "react-native";
import { useState } from "react";
export default function Counter() {
const [count, setCount] = useState(0);
return (
<View>
<Text>Count: {count}</Text>
<Button title="Add" onPress={() => setCount(count + 1)} />
</View>
);
}