अद्यतन 2016-05-27
के रूप में एसवीजी के लिए मौजूदा ब्राउज़र का समर्थन (source) के साथ, v15 प्रतिक्रिया एसवीजी के लिए समर्थन प्रतिक्रिया में है (करीब?) 100% समता। आपको बस जेएसएक्स संगत, like you already have to do for HTML (class
→ className
, style="color: purple"
→ style={{color: 'purple'}}
) बनाने के लिए कुछ वाक्यविन्यास परिवर्तनों को लागू करने की आवश्यकता है। किसी भी नामांकित (कोलन से अलग) विशेषता के लिए, उदा। xlink:href
, :
हटाएं और विशेषता के दूसरे भाग को कैपिटल करें, उदा। xlinkHref
। यहाँ <defs>
, <use>
के साथ एक svg का एक उदाहरण है, और इनलाइन शैलियों:
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>
);
}
Working codepen demo
विशिष्ट समर्थन के बारे में अधिक जानकारी के लिए, जाँच डॉक्स 'list of supported SVG attributes। और यहां (अब बंद) GitHub issue है जो नामित एसवीजी विशेषताओं के लिए समर्थन ट्रैक किया गया है।
पिछला जवाब
तुम बस नाम स्थान गुण अलग करना द्वारा dangerouslySetInnerHTML
का उपयोग किए बिना एक सरल एसवीजी एम्बेड कर सकते हैं। उदाहरण के लिए, इस काम करता है:
render: function() {
return (
<svg viewBox="0 0 120 120">
<circle cx="60" cy="60" r="50"/>
</svg>
);
}
इसके बाद से आप fill
की तरह जोड़ने रंगमंच की सामग्री के बारे में सोच सकते हैं, या जो कुछ भी कॉन्फ़िगर करने के लिए उपयोगी हो सकता है।
स्रोत
2015-06-01 17:40:02
क्या आप एक जेएसबीएन बना सकते हैं? यह आपके शुरुआती एसवीजी टैग को केवल '
@FakeRainBrigand धन्यवाद! यह इस मामले में इतना आसान था। हालांकि बेन के जवाब को देखो।जानना अच्छा है कि जब आपको आवश्यकता हो तो आप जेएसएक्स पार्सिंग के आसपास जा सकते हैं। – nicholas