अपडेट 2016-05-27
React v15 के रूप में, प्रतिक्रिया में SVG के लिए समर्थन (करीब है?) SVG ( स्रोत ) के लिए वर्तमान ब्राउज़र समर्थन के साथ 100% समता है । आपको इसे JSX के अनुकूल बनाने के लिए बस कुछ सिंटेक्स ट्रांसफ़ॉर्मेशन लागू करने की आवश्यकता है, जैसे कि आपको पहले से ही HTML ( class
→ className
, style="color: purple"
→ style={{color: 'purple'}}
) के लिए करना है। किसी भी नामांकित (कोलन-सेपरेटेड) विशेषता के लिए, उदाहरण xlink:href
के लिए, :
और विशेषता के दूसरे भाग को कैपिटलाइज़ करें, जैसे xlinkHref
। यहाँ के साथ एक svg का एक उदाहरण है <defs>
, <use>
और इनलाइन शैलियों:
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>
);
}
वर्किंग कोडपेन डेमो
विशिष्ट समर्थन के बारे में अधिक जानकारी के लिए, समर्थित SVG विशेषताओं की डॉक्स सूची देखें । और यहाँ (अब बंद) GitHub मुद्दा है जो नामांकित SVG विशेषताओं के समर्थन को ट्रैक करता है।
पिछला उत्तर
आप dangerouslySetInnerHTML
केवल नामस्थान विशेषताओं को अलग करके उपयोग किए बिना एक सरल एसवीजी एम्बेड कर सकते हैं । उदाहरण के लिए, यह काम करता है:
render: function() {
return (
<svg viewBox="0 0 120 120">
<circle cx="60" cy="60" r="50"/>
</svg>
);
}
जिस बिंदु पर आप प्रॉपर जोड़ने के बारे में सोच सकते हैं fill
, या जो कुछ भी कॉन्फ़िगर करने के लिए उपयोगी हो सकता है।
<svg id="Layer_1">
(या आईडी के बिना भी बेहतर) में बदलने के रूप में सरल हो सकता है । : संपादित करें: यहाँ एक उदाहरण है jsbin.com/nifemuwi/2/edit?js,output