Tài liệu & Hướng dẫn chuyên sâu: Chuyển đổi SVG sang React Component (SVG to TSX)
1. Tổng quan & Nguyên lý hoạt động
Khi dán trực tiếp một file SVG (xuất từ Figma, Illustrator hoặc tải từ thư viện icon) vào JSX, trình biên dịch sẽ báo lỗi ngay vì SVG dùng cú pháp HTML/XML thuần (`class`, `stroke-width`, `fill-rule`...) trong khi JSX bắt buộc camelCase (`className`, `strokeWidth`, `fillRule`). Việc tự tay đổi từng thuộc tính, bọc component, thêm kiểu dữ liệu props và loại bỏ `xmlns` thừa là thao tác lặp đi lặp lại trong mọi dự án React. Công cụ Chuyển đổi SVG sang React Component của Verdbench tự động hoá toàn bộ quy trình này bằng một trình phân tích XML nhẹ tự viết (không phụ thuộc DOMParser hay @svgr/core bản đầy đủ của Node.js), đảm bảo chạy mượt 100% trên trình duyệt: dán mã SVG, chọn các tuỳ chọn (TypeScript, React Native, tên component), nhận ngay component `.tsx` sẵn sàng dùng, có thể sao chép hoặc tải về.
2. Ưu thế kiến trúc & Tính năng nổi bật
Tự động đổi hơn 70 thuộc tính SVG kinh điển (class → className, stroke-width → strokeWidth, fill-rule → fillRule, xlink:href → xlinkHref hoặc href...) và chuyển `style="..."` dạng chuỗi CSS sang object literal `style={{ ... }}` hợp lệ trong JSX.
Tick "TypeScript" để sinh thêm interface props mở rộng từ SVGProps<SVGSVGElement> (hoặc SvgProps nếu chọn React Native), và phần tử gốc luôn được gắn `{...props}` để component nhận mọi prop tuỳ chỉnh từ nơi gọi (ghi đè width, className, onClick...).
Tick "React Native" để đổi toàn bộ thẻ sang các component tương ứng của react-native-svg (svg→Svg, path→Path, circle→Circle...) và tự sinh đúng câu lệnh import chỉ gồm những thẻ thực sự được dùng trong file SVG đó.
3. Bảng quy đổi thuộc tính SVG → JSX thường gặp
Một số thuộc tính HTML/SVG kinh điển hay gây lỗi "Unknown DOM property" nhất khi dán thẳng vào JSX mà chưa đổi tên:
| Thuộc tính SVG | Tên JSX tương ứng | Ghi chú |
|---|---|---|
| class | className | Giống hệt quy tắc chuyển đổi của JSX cho thẻ HTML thường |
| stroke-width | strokeWidth | Mọi thuộc tính presentation có dấu gạch ngang đều chuyển thành camelCase |
| fill-rule / clip-rule | fillRule / clipRule | Thường gặp ở icon dùng kỹ thuật cắt hình (clip path) |
| xlink:href | xlinkHref (hoặc href nếu xoá xmlns) | Thuộc tính có namespace — React map thành một từ camelCase duy nhất |
| style="fill:red" | style={{ fill: "red" }} | Chuỗi CSS inline phải chuyển thành object literal, không giữ dạng chuỗi |
4. Câu hỏi thường gặp (FAQ)
Giải đáp các thắc mắc phổ biến của lập trình viên khi sử dụng tiện ích Chuyển đổi SVG sang React Component (SVG to TSX).
5. Công cụ liên quan
- Chuyển đổi CSS sang TailwindDán CSS thuần, nhận ngay class Tailwind CSS tương ứng — xử lý hoàn toàn trên trình duyệt.
- Nén ảnh WebP / AVIFNén và đổi định dạng ảnh sang WebP, AVIF, JPEG hoặc PNG bằng canvas ngay trên trình duyệt — ảnh không bao giờ được tải lên.
- Trình xem vật lý Spring (Framer Motion)Tinh chỉnh trực quan stiffness, damping, mass của spring animation và sao chép ngay mã React chính xác.