J'ai un fichier SVG et je veux en faire un composant SvgIcon, comment dois-je faire?
Dans la documentation , tous les exemples utilisent des icônes de matériau prédéfinies ou une notation étrange de <path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z" />
dont je n'ai aucune idée de ce que c'est!
<path />
est un chemin SVG, c’est-à-dire les bits internes du SVG. le composant SvgIcon
devrait vraiment pouvoir prendre un chemin, mais ce n'est pas le cas :(
au lieu de cela, vous pouvez créer un composant comme https://github.com/callemall/material-ui/blob/56c113217d7d05d8bb0712771b727%81984d04b/src/svg-icons/action/home.js
avec votre source svg à la place de la path
. (Je recommande de le réduire un peu en utilisant https://jakearchibald.github.io/svgomg/ )
Pour obtenir le chemin d'accès à SvgIcon, ouvrez le fichier svg avec l'éditeur de texte et copiez l'expression de chemin correspondante.
Si vous créez plusieurs icônes, vous ne voudrez peut-être pas répéter toutes les références dans l'exemple cité dans la réponse acceptée. Vous pouvez utiliser un générateur de composant wrapper comme:
const wrapSvgPath = (path, viewBox='0 0 24 24') => (props) => (
<SvgIcon {...props} viewBox={viewBox}>{path}</SvgIcon>
)
utilisé comme:
const facebookPath = (<path
d="M17,2V2H17V6H15C14.31,6 14,6.81 14,7.5V10H14L17,10V14H14V22H10V14H7V10H10V6A4,4 0 0,1 14,2H17Z" />
)
export const FacebookIcon = wrapSvgPath(facebookPath)