Chuyển đổi SVG sang JSX

Dán SVG từ Figma, Illustrator hoặc bộ icon và nhận ngay một React component (JSX hoặc TSX) sẵn sàng sử dụng, kèm bản xem trước icon an toàn.

Cập nhật
Đầu ra
Mở .svg
HeartIcon.jsx

Xem trước (đã làm sạch — script, event handler và liên kết bên ngoài đã bị xóa)

Bản xem trước sẽ hiển thị ở đây

Dữ liệu của bạn không bao giờ rời khỏi máy tính. Mọi xử lý diễn ra 100% cục bộ trong trình duyệt của bạn.

Công cụ này có hữu ích không?0.0 0 lượt đánh giá
Chuyển mã SVG thành data URI đã mã hóa URLTối ưu cho background-image hoặc mask-image trong CSS.SVG sang CSS →

Cách dùng SVG sang JSX

  1. Dán mã SVG, mở file .svg, hoặc nhấn Mẫu.
  2. Đặt tên component và các tùy chọn: TypeScript, spread props, xóa kích thước cố định hoặc đổi màu sang currentColor.
  3. Kiểm tra bản xem trước đã được làm sạch để chắc chắn icon hiển thị đúng.
  4. Sao chép component hoặc tải về dạng file .jsx/.tsx rồi import vào dự án React hoặc Next.js của bạn.

Vì sao cần chuyển SVG sang React

SVG là XML, còn JSX là JavaScript trông giống HTML. Dán SVG thô trực tiếp vào React component thường gây ra cảnh báo như “Invalid DOM property stroke-width. Did you mean strokeWidth?” hoặc lỗi build với các thuộc tính có namespace như xlink:href và inkscape:label. Công cụ này viết lại mã thành JSX hợp lệ và bọc trong một component.

Những gì được chuyển đổi

SVGJSX
class="icon"className="icon"
stroke-width="2", fill-rule, stop-colorstrokeWidth="2", fillRule, stopColor
xlink:href="#a", xml:spacexlinkHref="#a", xmlSpace
style="fill-opacity: .5; stroke-linecap: round"style={{ fillOpacity: 0.5, strokeLinecap: 'round' }}
data-* và aria-*Giữ nguyên (React dùng dấu gạch ngang cho các thuộc tính này)
<?xml?>, <!DOCTYPE>, comment, <metadata>, thuộc tính của trình soạn thảo (Inkscape, Sodipodi, Sketch)Bị xóa
onclick và các inline handler khác, <script>Bị xóa — handler dạng chuỗi không hợp lệ trong React

Làm icon linh hoạt hơn

Khi bật Spread props, component sẽ kết thúc bằng {...props} trên thẻ <svg>, nhờ đó bạn có thể truyền className, width, aria-label hoặc event handler: <HeartIcon className="h-6 w-6" />. Xóa width/height cho phép CSS quyết định kích thước icon (nếu thiếu, viewBox sẽ được thêm từ kích thước cũ). Màu → currentColor thay thế màu fill và stroke để icon kế thừa màu chữ, rất phù hợp với bộ icon một màu. Tùy chọn TypeScript sẽ khai báo kiểu props là SVGProps<SVGSVGElement>.

Khả năng truy cập

Với icon trang trí đi kèm văn bản, hãy thêm aria-hidden="true". Với icon có ý nghĩa đứng riêng, hãy giữ lại thẻ <title> hoặc truyền role="img" kèm aria-label.

Quyền riêng tư và an toàn

Quá trình chuyển đổi chạy hoàn toàn trên trình duyệt của bạn, SVG không bao giờ rời khỏi thiết bị. Bản xem trước đã được làm sạch: script, foreignObject, inline event handler và tham chiếu bên ngoài đều bị loại bỏ trước khi hiển thị. Bạn đang làm quy trình dựa trên bundle? Các công cụ như SVGR làm việc tương tự ở bước build; trang này dành cho những icon cần chuyển nhanh, một lần. Nếu muốn dùng SVG làm nền CSS, hãy thử SVG sang CSS.

Cũng được tìm dưới tên: svg sang react, svg sang tsx, react svg component, svgr online, chuyển svg sang react, jsx converter, svg icon react, classname.

Các công cụ dùng kèm tốt với SVG sang JSX

  • Chuyển HTML sang Markdown — Dán HTML — hoặc sao chép trực tiếp văn bản rich text từ trang web, Google Doc hay email — rồi nhận Markdown gọn gàng để đưa vào README, wiki hoặc static site.
  • JSON sang TypeScript — Dán một mẫu JSON như phản hồi API hay file cấu hình, bạn sẽ nhận ngay các TypeScript interface sẵn sàng dùng, với kiểu lồng nhau, thuộc tính optional và union type.
  • Ảnh sang Base64 — Chuyển PNG, JPEG, SVG, WebP hoặc GIF thành Base64 data URI với mã CSS và HTML sẵn sàng sao chép, hoặc dán chuỗi Base64 để xem trước và tải ảnh về.
  • Định dạng HTML — Dán mã HTML đã nén hoặc lộn xộn và nhận lại HTML được thụt lề rõ ràng, nhất quán — bao gồm cả các khối <style> và <script> nhúng bên trong.

Câu hỏi thường gặp

Vì sao React cảnh báo “Invalid DOM property class”?
class là từ khóa dành riêng trong JavaScript, nên React dùng className. Điều tương tự áp dụng cho các thuộc tính SVG có dấu gạch ngang, chúng phải được viết camelCase (stroke-width → strokeWidth). Công cụ này tự động chuyển đổi các thuộc tính đó.
Nên dùng xlinkHref hay href?
Trình duyệt hiện đại hỗ trợ thuộc tính href thuần của SVG 2, còn xlink:href đã bị loại bỏ dần. React vẫn chấp nhận xlinkHref nên mã đã chuyển đổi vẫn chạy bình thường; bạn có thể đổi sang href nếu không cần hỗ trợ các trình duyệt rất cũ.
Làm sao đổi màu icon bằng CSS?
Bật Màu → currentColor. Khi đó icon sẽ dùng thuộc tính color CSS của phần tử cha, nên className="text-red-500" hoặc style={{ color: "red" }} sẽ đổi màu icon.
Kết quả có chạy được trong Next.js và Vite không?
Có. Kết quả là một function component thuần với default export, nên chạy được trong Next.js (App hoặc Pages Router), Vite, Create React App và Remix mà không cần loader bổ sung.
Có dùng được với React Native không?
Không trực tiếp. React Native cần react-native-svg, dùng các component viết hoa như <Svg> và <Path>. Các thuộc tính camelCase từ công cụ này là điểm khởi đầu tốt, nhưng bạn cần đổi tên các phần tử.
SVG của tôi có bị tải lên máy chủ không?
Không. Việc phân tích và chuyển đổi diễn ra trong trình duyệt bằng DOMParser tích hợp sẵn; không có gì được gửi lên máy chủ.
Tôi có thể cài SVG sang JSX như một ứng dụng web và dùng khi không có mạng không?
Có. SVG sang JSX là một ứng dụng web (PWA) có thể cài đặt — cài trực tiếp từ trình duyệt, không cần tải từ cửa hàng ứng dụng. Trên Chrome hoặc Edge (Windows, macOS, Linux, ChromeOS) hoặc Android, bấm Cài đặt ứng dụng ở đầu trang này; trên iPhone và iPad, dùng Chia sẻ → Thêm vào Màn hình chính; trên Mac, dùng File → Add to Dock trong Safari 17 trở lên. Sau đó ứng dụng mở trong cửa sổ riêng với biểu tượng riêng, và vì chạy hoàn toàn trên trình duyệt nên vẫn hoạt động khi không có mạng. Firefox trên máy tính không thể cài ứng dụng web. Cách cài đặt hoạt động thế nào.

Công cụ liên quan