Đăng ngày 2026-08-05 · Tác giả Đội ngũ MarkupGen
Từ Figma sang React: Quy trình thực tế cho developer

Dựng lại thủ công một thiết kế Figma đã hoàn chỉnh thành các component React thực sự chạy được là kiểu công việc trông có vẻ đơn giản khi nhìn trong file thiết kế, nhưng vừa mở code editor lên là trở nên tẻ nhạt ngay. Đây không chỉ là viết component — bạn còn phải suy ra lại spacing, alignment và hành vi responsive vốn đã tồn tại sẵn trong thiết kế, rồi hy vọng kết quả cuối cùng vẫn khớp sau hàng chục quyết định nhỏ dọc đường. Dưới đây là một quy trình Figma sang React thực tế, giúp những đánh giá đó tập trung vào đúng phần thực sự cần: ranh giới component, hành vi layout, và cách kết quả hoạt động trên nhiều kích thước màn hình.
Vì sao dựng component React thủ công từ Figma lại chậm
Phần lớn thời gian developer bỏ ra cho việc bàn giao này không phải để giải quyết vấn đề khó, mà là để "dịch" những quyết định thiết kế đã có sẵn sang một định dạng khác:
- Đọc thiết lập Auto Layout của từng layer rồi tự tay viết lại thành các rule Flexbox bên trong JSX.
- Đo lại padding, gap và cỡ chữ vốn đã được định nghĩa chính xác sẵn trong file Figma.
- Đoán xem component nên bắt đầu responsive từ đâu, vì frame Figma thường chỉ có một chiều rộng cố định.
- Xây dựng cấu trúc component và props từ con số không, thay vì bắt đầu từ thứ gì đó đã dùng được.
Không việc nào trong số này đòi hỏi kỹ năng thiết kế hay engineering đặc biệt phức tạp — đây chỉ là công việc lặp đi lặp lại, mang tính cơ học, và chính kiểu công việc thủ công lặp lại này là nơi dễ phát sinh sai lệch giữa thiết kế và UI thực tế được ship.
Từ component Figma đến component React
Không có một quy tắc duy nhất nào để biến một layer Figma thành component React — điều này phụ thuộc vào mức độ lặp lại, ý nghĩa của các biến thể (variant), và cách phần còn lại của ứng dụng được tổ chức. Để bắt đầu, một component Figma có nhiều biến thể (ví dụ một Button với trạng thái primary/secondary) thường nên trở thành một component React duy nhất, với các biến thể được xử lý bằng props, thay vì mỗi trạng thái một component riêng:
<Button variant="primary" size="md">
Get started
</Button>
Logic tương tự áp dụng cho bất cứ thứ gì lặp lại trong thiết kế — ba card giống nhau trong file Figma là tín hiệu cho một component Card duy nhất, được render từ một mảng dữ liệu, chứ không phải ba đoạn JSX giống hệt nhau. Lỗi phổ biến nhất ở bước này là chia component quá mức: biến mỗi frame Auto Layout thành một file riêng sẽ làm tăng độ phức tạp mà không thực sự tăng khả năng tái sử dụng. Để xem bản đồ khái niệm Figma-to-React chi tiết hơn — bao gồm cả những chỗ ranh giới component và props biến thể thường bị làm sai — xem Chuyển Figma Auto Layout sang React: Từ frame đến component.
Quy trình MarkupGen, áp dụng cho React
MarkupGen là một nền tảng SaaS đi kèm plugin Figma, chuyển thiết kế Figma thành HTML, CSS hoặc component React, để bạn bắt đầu từ code đã được tạo sẵn thay vì một file component trống. Quy trình gồm bốn bước:
1. Xuất frame từ Figma. Chọn frame bạn muốn chuyển đổi và gửi nó vào workspace bằng plugin Figma của MarkupGen. Plugin nắm bắt cấu trúc, style và hình ảnh của frame cùng lúc, thay vì bắt bạn copy từng layer một.
2. AI dựng code từ chính thiết kế thật. Từ đó, AI xây dựng HTML và CSS dựa trên cấu trúc và style thực tế của frame — không phải một phỏng đoán chung chung về việc thiết kế "có thể" trông như thế nào.
3. Chọn React làm định dạng đầu ra. Định dạng đầu ra là lựa chọn cho mỗi lần export: HTML/CSS thuần, Tailwind CSS, hoặc component React. Chọn React, bạn sẽ nhận được các component được dựng từ chính cấu trúc đó, sẵn sàng đặt vào một codebase đã có sẵn thay vì một trang tĩnh. (Cần HTML/CSS thuần thay vào đó? Hướng dẫn tổng quát Figma sang HTML sẽ nói về hướng đi đó.)
4. Tinh chỉnh, rồi export gói cuối cùng. Trước khi tạo code cuối cùng, một trình chỉnh sửa trong ứng dụng cho phép bạn điều chỉnh nội dung, font chữ và layout một cách trực quan. Mỗi lần export cũng nhận được một điểm chất lượng AI tự động, giúp bạn biết ngay liệu kết quả đã gần sẵn sàng đưa vào production hay cần thêm một lượt chỉnh sửa nữa.
Auto Layout trở thành Flexbox bên trong component như thế nào
Phần giúp tiết kiệm nhiều công sức thủ công nhất trong quy trình này là layout. Các thuộc tính Auto Layout của Figma — direction, gap, padding và alignment — được tự động ánh xạ sang một cấu trúc CSS Flexbox tương đương, và việc ánh xạ này được giữ nguyên trong các component React được tạo ra, chứ không chỉ dừng ở một trang HTML tĩnh. Một hàng phần tử dùng Auto Layout với gap được định nghĩa sẽ trở thành một flex container, trong đó gap, padding và alignment đã được gắn sẵn vào style của component, thay vì một component bạn phải tự canh chỉnh bằng mắt. Các frame Auto Layout lồng nhau cũng được ánh xạ thành các flex container lồng nhau theo cách tương tự, đủ dùng cho phần lớn layout dạng card, list và navigation — chỉ một số ít layout thực sự mang tính lưới (grid) mới phù hợp hơn với CSS Grid. Nếu muốn hiểu rõ hơn cách ánh xạ này hoạt động, bạn có thể xem cách Auto Layout ánh xạ sang Flexbox.
Giúp hành vi responsive thực sự hoạt động
Hành vi responsive là phần đáng để xem kỹ nhất trong output Figma-to-React, chứ không phải phần đáng bỏ qua. Các chế độ sizing của Auto Layout — Hug, Fill, Fixed — cùng các ràng buộc resize của frame là những tín hiệu thực sự về việc component nên hoạt động thế nào ở các độ rộng khác nhau: một container Fill là tín hiệu cho một chiều rộng linh hoạt hoặc flex: 1 trong CSS, chứ không phải một giá trị pixel cố định. Nhưng cả Figma lẫn công cụ chuyển đổi đều không thể tự sinh ra hoàn chỉnh code React responsive — các breakpoint cụ thể, cách layout nên sắp xếp lại trên mobile, và việc component có cần một bố cục hoàn toàn khác dưới một độ rộng nhất định hay không, vẫn là những quyết định cần con người diễn giải, dựa trên các tín hiệu đó chứ không thể thay thế hoàn toàn bằng chúng. Trong thực tế, điều này có nghĩa là bạn nên kiểm tra component (dù được tạo tự động hay viết tay) ở một vài breakpoint thực tế, thay vì tin rằng max-width hay media query đã được chuyển đổi đúng, và nên coi một frame Figma chỉ thiết kế cho desktop là điểm khởi đầu cho hành vi mobile, chứ không phải lời giải cuối cùng.
Rà soát component trước khi đưa vào ứng dụng của bạn
Code được tạo ra đã lo phần lớn công việc, nhưng trước khi merge vào một ứng dụng đã có sẵn, vẫn đáng để rà soát lại một lượt:
- Kiểm tra ranh giới giữa các component. Xác nhận các component được tạo ra chia tách đúng chỗ mà bạn sẽ tự nhiên tách trong codebase của mình — sau khi đưa vào project, bạn vẫn luôn có thể tách nhỏ thêm. Button, card, nav và các UI lặp lại khác thường là kích thước hợp lý cho một component; tách nhỏ đến từng layer chỉ làm tăng độ phức tạp mà không mang lại lợi ích gì.
- Xem markup, chứ không chỉ phần hiển thị. Kết quả xuất ra ưu tiên HTML ngữ nghĩa với cấu trúc heading đúng thứ bậc, các phần tử
<button>và<a>thật cho phần tương tác, cùngalttext cho hình ảnh — thay vì<div>lồng sâu. Đây là điều đáng để rà nhanh, vì công cụ tìm kiếm, screen reader và điều hướng bằng bàn phím đều dựa vào đó, và việc giống hệt về mặt hình ảnh so với frame Figma không tự nhiên đảm bảo điều này. Xem những gì khả năng tiếp cận thực sự cần khi chuyển Figma sang HTML để có danh sách kiểm tra đầy đủ hơn. - Kiểm tra lại nội dung và văn bản. Bất cứ điều gì trong thiết kế thay đổi sau khi export được tạo ra thì sửa dễ nhất ngay trong trình chỉnh sửa của ứng dụng, trước khi bạn lấy code cuối cùng vào project.
- Kết nối data và state của riêng bạn. Component được tạo ra lo phần cấu trúc và style — việc kết nối chúng với props thật, dữ liệu API hay state của ứng dụng vẫn là việc của bạn.
Thử với thiết kế của chính bạn
Không điều nào trong số này thay thế đánh giá của developer về cách component nên hoạt động — nó chỉ loại bỏ công việc cơ học của việc biến các quyết định layout đã có sẵn thành JSX và CSS, để sự đánh giá đó có thể dồn vào những phần thực sự cần đến. MarkupGen có gói miễn phí, nên bạn có thể bắt đầu miễn phí và chỉ nâng cấp khi thực sự cần — không phí ẩn, hủy bất cứ lúc nào. Nếu muốn xem toàn bộ quy trình bốn bước trên một thiết kế thật, bạn có thể thử ngay trên file Figma của chính mình. Có thắc mắc gì, liên hệ support@markupgen.com.
FAQ
Làm sao để chuyển một thiết kế Figma sang React? Xem xét cấu trúc của frame và thiết lập Auto Layout, quyết định phần nào lặp lại nên trở thành component tái sử dụng với props cho các biến thể, sau đó xây dựng (hoặc tạo tự động) component React và CSS từ cấu trúc đó — Auto Layout ánh xạ sang Flexbox, còn các ràng buộc resize cho biết hành vi responsive. Một công cụ như MarkupGen có thể tạo phiên bản đầu tiên đó một cách tự động; dù bằng cách nào, một lượt rà soát về ranh giới component, khả năng tiếp cận và dữ liệu thật vẫn đáng làm trước khi ship.
Thiết kế Figma có thể trở thành component React tái sử dụng được không? Có, nhưng không phải layer nào cũng nên trở thành component. UI lặp lại — button, card, mục nav, trường form — là ứng viên tốt; một layer chỉ xuất hiện một lần trong thiết kế thường không cần component riêng.
Auto Layout của Figma ánh xạ sang React và CSS như thế nào?
Chủ yếu là sang CSS Flexbox: direction trở thành flex-direction, gap trở thành gap, padding trở thành padding, và alignment trở thành justify-content/align-items, được áp dụng vào bất kỳ cách tiếp cận CSS nào mà component React sử dụng.
Làm sao để output từ Figma sang React trở nên responsive? Hãy bắt đầu từ các chế độ sizing của Auto Layout và các ràng buộc resize trên frame — chúng cho biết hành vi resize dự kiến — nhưng vẫn nên chuẩn bị tự thêm hoặc chỉnh breakpoint và layout riêng cho mobile. Không có công cụ nào, kể cả Figma, có thể tự suy luận hoàn toàn hành vi responsive nếu điều đó chưa được thể hiện sẵn trong thiết kế.
Có nên biến mọi component Figma thành component React không? Không. Việc biến mọi thứ mà file thiết kế gọi là "component" thành component React thường chỉ làm tăng độ phức tạp mà không giúp code dễ bảo trì hơn — những pattern lặp lại, tái sử dụng được thì đáng làm; còn layer chỉ xuất hiện một lần thì thường không cần.
Muốn chuyển thẳng thiết kế của bạn sang React luôn? Chuyển thiết kế Figma sang React với MarkupGen →
