ReactSprite
Dynamic SVG Sprite Polyfill Component for React
<ReactSprite href="sprite.svg#close" />
// Will be turned into
<svg>
<use xlink:href="sprite.svg#close" />
</svg>
Not a whole lot
Installation & Usage
npm i react-sprite
import { useState } from 'react'
import { createRoot } from 'react-dom/client'
import ReactSprite from 'react-sprite'
const SimpleIcon = () => <ReactSprite href={`sprite.svg#${'close'}`} />
const StatefulIcon = () => {
const [icon, toggleOpen] = useState('closed')
return (
<ReactSprite
href={`sprite.svg#${icon}`}
onClick={() => toggleOpen(icon === 'closed' ? 'open' : 'closed')}
/>
)
}
const WithOptions = (props) => (
<ReactSprite
// Same as href.
xlinkHref="sprite.svg#close"
// Force use of polyfill even in browsers with support.
force
// Any other SVG element props will be passed over.
viewBox="0 0 50 50"
onClick={() => alert('Hello there!')}
{...props}
/>
)
createRoot(document.body).render(
<>
<SimpleIcon />
<StatefulIcon />
<WithOptions className="my-icon" />
</>
)