Dans mon projet, j'utilise des fichiers svg personnalisés dans le cadre de l'exigence.
J'utilise material-ui@3.9.3 pour y parvenir.
J'ai regardé l'exemple qui est disponible sur la documentation officielle -> https: // matériel -ui.com/style/icons/#svg-icons
Cependant, dans ma version, les icônes personnalisées n'apparaissent pas de la même manière. Ma version fourchue est disponible sur https://codesandbox.io/s/mqnq9qrqn8
Ce que je recherche, c'est un moyen d'utiliser les icônes personnalisées qui peuvent bien fonctionner avec le composant de Material-UI.
Quelqu'un pourrait-il m'aider s'il vous plaît? Merci
3 Réponses :
La réponse réside dans l'attribut viewBox (MDN) < / a>
Lorsque vous jouez avec des SVG, en particulier des copier / coller, vous devez affiner la viewBox pour encadrer correctement vos chemins. Je commence généralement par et augmente ou diminue, au goût. Après quelques manipulations, "0 0 60 50" semble plutôt bon (lien) a >.
En regardant la documentation MaterialUI (lien) , ils ont prévu ce genre de chose et permettez-le comme accessoire sur le composant.
Merci beaucoup. Je me demande comment puis-je accéder à viewBox 0 0 24 24
Aucun problème. Pour changer la taille de l'icône, vous pouvez simplement utiliser les propriétés CSS, width et height . Vous pouvez également ajouter les attributs directement à . J'ai mis à jour le CodeSandbox pour démontrer (demo.js ligne 17). C'est difficile à expliquer pour moi, mais la façon dont je pense à viewBox est qu'il gère le centrage des chemins dans le SVG.
Vous pouvez également utiliser le composant Material-UI IconButton et l'enrouler autour de votre image svg comme indiqué ci-dessous
import React from 'react'
import { Icon } from "@material-ui/core";
import YourLogo from './yourlogo.svg'
export const Logo = () => (
<Icon>
<img src={YourLogo} height={25} width={25}/>
</Icon>
)
Vous pouvez importer le fichier svg en tant que composant React, puis l'utiliser directement dans un composant SvgIcon à partir de l'interface utilisateur matérielle. Cela vous permettra également de styliser votre composant.
import React from 'react';
import { SvgIcon, makeStyles } from '@material-ui/core';
import { ReactComponent as MySvg } from './img/someSvgFile.svg';
const useStyles = makeStyles(theme => {
mySvgStyle:{
fillColor: theme.palette.primary.main
}
})
function MySvgIcon() {
classes = useStyles();
return(
<SvgIcon className={classes.mySvgStyle}>
<MySvg/>
</SvgIcon>
)
}