2016-05-27 Güncellemesi
React v15'ten itibaren, React'te SVG desteği, SVG için mevcut tarayıcı desteğiyle ( kaynak ) % 100 eşittir (yaklaşık? ). HTML ( class
→ className
, style="color: purple"
→ style={{color: 'purple'}}
) için zaten yapmanız gerektiği gibi , JSX uyumlu hale getirmek için bazı sözdizimi dönüşümleri uygulamanız yeterlidir . İsim alanlı (iki nokta üst üste ile ayrılmış) öznitelik için, örneğin xlink:href
, özniteliğin :
ikinci bölümünü kaldırın ve büyük harfle yazın, ör xlinkHref
. İşte bir ile svg bir örnek <defs>
, <use>
ve satır içi stilleri:
function SvgWithXlink (props) {
return (
<svg
width="100%"
height="100%"
xmlns="http://www.w3.org/2000/svg"
xmlnsXlink="http://www.w3.org/1999/xlink"
>
<style>
{ `.classA { fill:${props.fill} }` }
</style>
<defs>
<g id="Port">
<circle style={{fill:'inherit'}} r="10"/>
</g>
</defs>
<text y="15">black</text>
<use x="70" y="10" xlinkHref="#Port" />
<text y="35">{ props.fill }</text>
<use x="70" y="30" xlinkHref="#Port" className="classA"/>
<text y="55">blue</text>
<use x="0" y="50" xlinkHref="#Port" style={{fill:'blue'}}/>
</svg>
);
}
Çalışma codepen demosu
Özel destek hakkında daha fazla ayrıntı için, belgelerin desteklenen SVG öznitelikleri listesine bakın . Ve işte ad alanlı SVG öznitelikleri için desteği izleyen (artık kapalı) GitHub sorunu .
Önceki cevap
Yalnızca dangerouslySetInnerHTML
ad alanı niteliklerini çıkararak kullanmak zorunda kalmadan basit bir SVG yerleştirmesi yapabilirsiniz . Örneğin, bu işe yarar:
render: function() {
return (
<svg viewBox="0 0 120 120">
<circle cx="60" cy="60" r="50"/>
</svg>
);
}
Hangi noktada props eklemeyi fill
veya yapılandırmak için yararlı olabilecek başka şeyleri düşünebilirsiniz.
<svg id="Layer_1">
(veya hatta daha iyisi, id olmadan) değiştirmek kadar basit olabilir . Düzenleme: işte bir örnek: jsbin.com/nifemuwi/2/edit?js,output