JSX siap tempel dari berkas SVG mana pun — atribut diganti nama sesuai keinginan React, props disebar ke elemen akar, dan TypeScript bila Anda perlukan.
SVGReactJSXTypeScript
SVG → React
☞ berjalan sepenuhnya di browser Anda — tidak ada yang diunggah
Letakkan SVG Anda di sini
atau klik untuk memilih — hanya SVG
Komponen React (.jsx)
Nama komponen diambil dari nama berkas, jadi arrow-left.svg menjadi ArrowLeft.
Komponen TypeScript (.tsx)
Komponen yang sama, bertipe SVGProps<SVGSVGElement>.
Cuplikan JSX
Hanya markupnya, untuk ditempel ke dalam komponen yang sudah Anda punya.
ikon sebagai komponen
Kenapa SVG tidak bisa ditempel apa adanya ke JSX
JSX terlihat seperti markup, padahal itu JavaScript. Atribut bertanda hubung seperti stroke-width bukan pengenal yang sah, class bentrok dengan kata terpesan, dan kurung kurawal di dalam style sebaris dibaca sebagai ekspresi. SVG yang disalin langsung dari perangkat desain biasanya gagal dikompilasi karena setidaknya salah satu alasan itu.
Konverter ini hanya mengganti nama yang memang harus diganti dan membiarkan sisanya. Atribut data- dan aria- tetap memakai tanda hubung, karena React meneruskannya apa adanya — mengganti namanya adalah cara yang lazim untuk kehilangan label aksesibilitas tanpa disadari.
tiga langkah
Cara mengubah SVG menjadi komponen React
01
Letakkan SVG
Pilih berkas .svg — berkasnya tetap di perangkat Anda.
02
Salin blok yang Anda perlukan
Komponen utuh, kembarannya dalam TypeScript, atau JSX polosnya.
03
Taruh di proyek Anda
Impor seperti komponen lain dan atur gayanya lewat props.
jawaban singkat
FAQ SVG ke React
Kenapa {...props} ada di akhir tag svg?
Supaya apa pun yang Anda oper menang. Di JSX, atribut yang ditulis belakangan menimpa yang lebih awal, jadi dengan sebaran di posisi terakhir Anda bisa menetapkan className, width, atau onClick dari luar. Bila ditaruh di depan, nilai yang tertanam di berkas justru diam-diam menimpa milik Anda.
Bagaimana cara mengganti warna ikonnya?
Ganti fill atau stroke yang tertulis tetap di keluarannya dengan currentColor, lalu atur warnanya lewat CSS pada elemen induk mana pun. Jika warnanya tersebar di banyak simpul, lewatkan dulu ke pengubah warna SVG — alat itu bisa mengganti semuanya menjadi currentColor sekaligus.
Bisakah dipakai dengan React Native?
Tidak secara langsung. React Native tidak punya DOM, jadi SVG di sana memerlukan react-native-svg dan nama elemen berhuruf besar seperti Svg dan Path. Pola penggantian nama atribut di sini tetap benar, tetapi impor dan tag-nya berbeda.
Keluarannya jadi satu baris yang sangat panjang
Itu memang bentuk berkas sumbernya — SVG yang sudah diminifikasi tetap diminifikasi, sebab merapikan format adalah pekerjaan terpisah. Lewatkan dulu ke perapi SVG, maka komponennya keluar dengan indentasi yang mudah dibaca.
Apakah file saya diunggah?
Tidak. Konversinya hanyalah pengolahan teks biasa yang dilakukan di browser Anda.