Trình chuyển đổi SVG sang JSX
Chuyển SVG sang React JSX: thuộc tính thành camelCase, style nội tuyến thành đối tượng, và xuất ra JSX nội tuyến, memo hoặc forwardRef.
Trình chuyển đổi SVG sang JSX — Dán mã đánh dấu SVG hoặc thả một tệp .svg và nhận ngay JSX sẵn sàng cho React: các thuộc tính như stroke-width thành camelCase, class thành className, một chuỗi style nội tuyến được viết lại thành đối tượng style JSX, và các phần tử rỗng được tự đóng. Bạn có thể chạy dọn dẹp kiểu SVGO trước, rồi xuất JSX nội tuyến hoặc một thành phần hàm, memo hoặc forwardRef trải SVGProps. Mọi thứ đều là một phép biến đổi chuỗi thuần túy chạy hoàn toàn trong trình duyệt của bạn; mã đánh dấu của bạn không bao giờ rời khỏi trang hay chạm tới máy chủ.
Trình chuyển đổi SVG sang JSX là gì?
Trình chuyển đổi SVG sang JSX là một công cụ miễn phí trong trình duyệt, biến mã đánh dấu SVG thông thường thành React JSX hợp lệ mà bạn có thể dán thẳng vào một thành phần. React mong đợi các thuộc tính DOM ở dạng camelCase (strokeWidth, clipPath, fillRule), dùng className thay cho class và cần thuộc tính style là một đối tượng gồm các thuộc tính camelCase thay vì một chuỗi — công cụ này sửa tất cả những điều đó một cách tự động. Các nhà phát triển front-end và nhà thiết kế dùng nó khi xuất biểu tượng từ Figma, Illustrator hoặc một bộ biểu tượng. Bật dọn dẹp tùy chọn để loại bỏ chú thích, siêu dữ liệu của trình chỉnh sửa và khai báo XML, rồi chọn đầu ra là JSX nội tuyến hay một thành phần hàm, memo() hoặc forwardRef được gán kiểu bằng React.SVGProps.
Cách sử dụng Trình chuyển đổi SVG sang JSX
- Dán mã đánh dấu SVG của bạn vào ô nhập, hoặc thả một tệp .svg vào vùng thả.
- Đọc JSX đã chuyển đổi trong ô đầu ra — các thuộc tính ở dạng camelCase, class thành className, một style nội tuyến thành đối tượng style, và các thẻ rỗng tự đóng.
- Mở Cài đặt và chọn Đầu ra thành phần: JSX nội tuyến, một thành phần hàm, một thành phần memo() hoặc một thành phần forwardRef.
- Đặt trường Tên thành phần để kiểm soát tên dùng trong lớp bọc (ví dụ MyIcon).
- Bật Props TypeScript để gán kiểu cho thành phần bằng React.SVGProps, hoặc bật Dọn dẹp SVG để loại bỏ chú thích và siêu dữ liệu của trình chỉnh sửa trước.
- Nhấp Sao chép để sao chép JSX, rồi dán nó vào dự án React hoặc Next.js của bạn.
Ví dụ
Kiểu nội tuyến và thuộc tính được chuyển đổi
Đầu vào
<svg viewBox="0 0 24 24"><path stroke-width="2" style="fill:none;stroke-linecap:round" d="M4 12h16"/></svg>
Đầu ra
<svg viewBox="0 0 24 24"><path strokeWidth="2" style={{ fill: "none", strokeLinecap: "round" }} d="M4 12h16" /></svg>Thành phần forwardRef với props có kiểu
Đầu vào
<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/></svg>
Đầu ra
export const MyIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(function MyIcon(props, ref) {
return (
<svg viewBox="0 0 24 24" ref={ref} {...props}><circle cx="12" cy="12" r="10" /></svg>
);
});Câu hỏi thường gặp
- Trình chuyển đổi thay đổi gì trong SVG của tôi?
- Nó đổi tên các thuộc tính có gạch nối và có không gian tên sang dạng camelCase của React (stroke-width thành strokeWidth, xlink:href thành xlinkHref), biến class thành className, viết lại một chuỗi style nội tuyến thành đối tượng style JSX với khóa camelCase, và tự đóng các phần tử rỗng như path và rect để chúng là JSX hợp lệ.
- Các tùy chọn đầu ra thành phần hoạt động thế nào?
- Chọn JSX nội tuyến để đặt mã đánh dấu ở bất cứ đâu, hoặc bọc nó thành thành phần hàm, memo() hoặc forwardRef bằng Tên thành phần bạn nhập. Một thành phần forwardRef nhận một ref được gắn vào svg gốc. Bật Props TypeScript để gán kiểu cho bất kỳ lớp bọc nào bằng React.SVGProps và trải {...props}.
- Nó có chuyển đổi kiểu nội tuyến không?
- Có. Một thuộc tính style="fill:red;stroke-width:2" được viết lại thành đối tượng style JSX như style={{ fill: "red", strokeWidth: "2" }}, với tên thuộc tính ở dạng camelCase và giá trị giữ nguyên là chuỗi. Các thuộc tính tùy chỉnh CSS (--var) được giữ làm khóa chuỗi.
- Dọn dẹp kiểu SVGO làm gì?
- Khi Dọn dẹp SVG được bật, công cụ loại bỏ khai báo XML, DOCTYPE, chú thích, <metadata>, các không gian tên của trình chỉnh sửa như inkscape: và sodipodi:, và thuộc tính version của svg, rồi thu gọn khoảng trắng — tất cả trước khi việc chuyển đổi JSX chạy.
- SVG của tôi có được tải lên đâu đó không?
- Không. Thả một tệp hoặc dán mã đánh dấu chạy một phép biến đổi chuỗi thuần túy hoàn toàn trong trình duyệt của bạn, nên SVG của bạn không bao giờ được gửi tới máy chủ và công cụ hoạt động ngoại tuyến.
Công cụ liên quan
Mã thành ảnh
Biến một đoạn mã thành hình ảnh có tô sáng cú pháp ngay trong trình duyệt, với hơn 20 ngôn ngữ, chủ đề và nền tùy chỉnh, số dòng, cùng xuất PNG hoặc SVG.
Trình kiểm tra độ tương phản màu
Kiểm tra độ tương phản WCAG 2.1 và điểm APCA Lc giữa màu chữ và màu nền, xem các nhãn AA, AAA và 3:1, rồi áp dụng màu đạt gần nhất.
Trình trộn màu
Trộn hai màu HEX theo tỉ lệ bạn chọn trong không gian màu RGB hoặc Lab và đọc màu trung gian thu được dưới dạng mẫu màu và giá trị HEX có thể sao chép.
Trình tạo sắc độ màu
Biến một màu HEX cơ sở thành thang OKLCH, HSL hoặc RGB với số bước tùy chỉnh, gợi ý tương phản WCAG cho từng bước và xuất ra CSS, Tailwind cùng JSON.