Jadi biasanya untuk menyertakan sebagian besar ikon SVG saya yang memerlukan gaya sederhana, saya melakukan:
<svg>
<use xlink:href="/svg/svg-sprite#my-icon" />
</svg>
Sekarang saya telah bermain dengan ReactJS akhir-akhir ini mengevaluasinya sebagai komponen yang mungkin dalam tumpukan pengembangan front-end baru saya, namun saya perhatikan bahwa dalam daftar tag / atribut yang didukung , tidak ada use
atau xlink:href
tidak didukung.
Apakah mungkin untuk menggunakan sprite svg dan memuatnya dengan cara ini di ReactJS?
<use xlinkHref="/svg/svg-sprite#my-icon" />
.xlink:href
tidak digunakan lagi, sekarang seharusnya hanya digunakanhref
- developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:hrefxlink:href
jadi kami masih perlu menggunakannya. Aplikasi web yang sebenarnya perlu menggunakan penyebut umum fitur browser, atau menerapkan solusi / polyfill tertentu.Property 'xlink' does not exist on type 'SVGProps<SVGImageElement>
Jawaban:
Perbarui september 2018 : solusi ini tidak digunakan lagi, baca jawaban Jon sebagai gantinya.
-
React tidak mendukung semua tag SVG seperti yang Anda katakan, ada daftar tag yang didukung di sini . Mereka sedang mengerjakan dukungan yang lebih luas, f.ex dalam tiket ini .
Solusi umum adalah menyuntikkan HTML sebagai gantinya untuk tag yang tidak didukung, f.ex:
sumber
dangerouslySetInnerHTML
. Anda dapat menggunakanxlinkHref
seperti yang disebutkan di bawah ini.MDN mengatakan bahwa
xlink:href
sudah ditinggalkan mendukunghref
. Anda harus dapat menggunakanhref
atribut secara langsung. Contoh di bawah ini mencakup kedua versi.Mulai React 0.14 ,
xlink:href
tersedia melalui React sebagai propertixlinkHref
. Ini disebutkan sebagai salah satu "perangkat tambahan penting" dalam catatan rilis untuk 0.14.Perbarui 2018-06-09: Menambahkan info tentang atribut
href
vsxlink:href
dan contoh yang diperbarui untuk menyertakan keduanya. Terima kasih @devuxerPembaruan 3 : Pada saat penulisan, properti SVG master React dapat ditemukan di sini .
Pembaruan 2 : Tampaknya semua atribut svg sekarang harus tersedia melalui react (lihat atribut svg gabungan PR ).
Pembaruan 1 : Anda mungkin ingin mengawasi masalah terkait svg di GitHub untuk pendaratan dukungan SVG tambahan. Ada perkembangan dalam pengerjaan.Demo:
sumber
xlink:href
sudah tidak digunakan lagi, dan rekomendasinya adalah untuk digunakanhref
tanpa awalan namespace. (Namun, perhatikan, jika Anda menggunakan TypeScript, pengetikan belum diperbarui untuk mencerminkan hal ini.)Jika Anda menemukan
xlink:href
, maka Anda bisa mendapatkan setara dalam ReactJS dengan menghapus usus besar dan camelcasing teks menambahkan:xlinkHref
.Pada akhirnya Anda mungkin akan menggunakan tag namespace lain di SVG, seperti
xml:space
, dll. Aturan yang sama berlaku untuk mereka (yaitu,xml:space
menjadixmlSpace
).sumber
Seperti yang sudah dikatakan dalam jawaban Jon Surrell, tag penggunaan didukung sekarang. Jika Anda tidak menggunakan JSX, Anda dapat menerapkannya seperti ini:
sumber
Saya membuat bantuan kecil yang mengatasi masalah ini: https://www.npmjs.com/package/react-svg-use
pertama
npm i react-svg-use -S
lalu sederhanadan ini akan menghasilkan markup berikut
sumber
SVG dapat diimpor dan digunakan langsung sebagai komponen React dalam kode React Anda.
sumber