Apakah mungkin untuk menanamkan markup SVG ke komponen ReactJS?
render: function() {
return (
<span>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmln ...
</span>
);
}
Menghasilkan kesalahan:
Atribut Namespace tidak didukung. ReactJSX bukan XML.
Apa cara teringan untuk melakukan ini. Menggunakan sesuatu seperti React ART adalah cara yang terlalu berlebihan untuk apa yang saya coba lakukan.
javascript
svg
reactjs
nicholas
sumber
sumber
<svg id="Layer_1">
(atau bahkan lebih baik, tanpa id). Sunting: inilah sebuah contoh: jsbin.com/nifemuwi/2/edit?js,outputJawaban:
Perbarui 2016-05-27
Pada React v15, dukungan untuk SVG di React adalah (mendekati?) 100% paritas dengan dukungan browser saat ini untuk SVG ( sumber ). Anda hanya perlu menerapkan beberapa transformasi sintaksis agar JSX kompatibel, seperti yang harus Anda lakukan untuk HTML (
class
→className
,style="color: purple"
→style={{color: 'purple'}}
). Untuk atribut namespaced (dipisahkan usus besar), misalnyaxlink:href
, hapus:
dan kapitalisasi bagian kedua dari atribut, misalnyaxlinkHref
. Berikut ini adalah contoh dari svg dengan<defs>
,<use>
, dan gaya inline:Demo codepen bekerja
Untuk detail lebih lanjut tentang dukungan spesifik, periksa daftar dokumen tentang atribut SVG yang didukung . Dan inilah masalah GitHub (sekarang ditutup) yang melacak dukungan untuk atribut SVG namespaced.
Jawaban sebelumnya
Anda dapat melakukan embed SVG sederhana tanpa harus menggunakan
dangerouslySetInnerHTML
hanya dengan menghapus atribut namespace. Misalnya, ini berfungsi:Pada titik mana Anda dapat berpikir tentang menambahkan alat peraga seperti
fill
, atau apa pun yang mungkin berguna untuk dikonfigurasi.sumber
.class1, .class2{fill: #005baa;}
' Bagaimana saya bisa memperbaikinya?classB
dan berhasil: codepen.io/acusti/pen/BVJzNgJika Anda hanya memiliki string svg statis yang ingin Anda sertakan, Anda dapat menggunakan
dangerouslySetInnerHTML
:dan Bereaksi akan menyertakan markup secara langsung tanpa memproses sama sekali.
sumber
Menurut pengembang reaksi , Anda tidak perlu namespace xmlns. Jika Anda memerlukan atribut,
xlink:href
Anda dapat menggunakan xlinkHref dari reaksi 0.14Contoh
sumber
Jika Anda ingin memuatnya dari file, Anda dapat mencoba menggunakan React-inlinesvg - itu cukup sederhana dan mudah.
sumber