Transformez vos exports graphiques en composants React prêts pour la production
Les graphistes privilégient le format vectoriel SVG, mais son intégration directe dans du code React pose des défis récurrents. Les exports issus de Figma ou d'Illustrator comportent des attributs incompatibles avec la syntaxe JSX. Notre convertisseur SVG vers React JSX gratuit traduit ce balisage brut en un composant React optimisé et typé en quelques secondes, sans avertissements de console.
Pourquoi les fichiers SVG bruts provoquent-ils des erreurs dans React ?
La syntaxe JSX de React repose sur JavaScript. Les conventions de nommage du langage s'appliquent donc rigoureusement, créant des incompatibilités lors de l'insertion directe d'un SVG traditionnel :
Kebab-case vs CamelCase : le format SVG utilise des tirets pour de nombreux attributs (stroke-width, fill-opacity). JavaScript n'admettant pas de tirets dans les noms de propriétés d'objets, React exige des versions en camelCase (strokeWidth, fillOpacity).
Le conflit du mot réservé « class » : en HTML, l'attribut est class. En JavaScript, class est un mot-clé réservé pour la déclaration de classes. React impose l'utilisation de className.
Styles en ligne : les fichiers SVG standards écrivent les styles sous forme de chaînes de caractères : style="fill: blue". React requiert un objet JavaScript : style={{ fill: 'blue' }}.
Espaces de noms inutiles : les attributs xmlns ou xmlns:xlink indispensables aux fichiers autonomes sont superflus dans une arborescence de composants React.
Conflits d'identifiants dupliqués : un dégradé exporté depuis Figma comporte souvent un identifiant générique comme id="a". L'utilisation répétée de la même icône sur une page génère des collisions d'ID qui corrompent l'affichage des masques.
Un composant React propre et moderne
Notre outil génère un composant prêt à l'emploi respectant les meilleures pratiques de développement :
import React from "react";
const SvgIcon = React.memo(
(props: React.SVGProps<SVGSVGElement>) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="400"
height="300"
viewBox="0 0 400 300"
{...props}
>
<rect width="100%" height="100%" fill="#f8f8f8" />
<path fill="#31343C" d="M112.215 126.065v34.4h-8.38..." />
</svg>
)
);
export default SvgIcon;La décomposition {...props} vous permet de redéfinir la largeur, la hauteur ou la couleur de votre icône directement depuis le composant parent.
Conseil d'architecte : concevoir une bibliothèque d'icônes pérenne
Pour structurer efficacement vos ressources graphiques :
- Convertissez vos SVG avec les options TypeScript et React Memo activées.
- Classez chaque icône dans un fichier propre sous
components/icons. - Remplacez les teintes fixes par
"currentColor". - Exportez l'ensemble depuis un fichier index centralisé.
L'utilisation de fill="currentColor" permet de piloter la teinte des icônes directement en CSS sans surcharger le code JavaScript.
À qui s'adresse cet utilitaire ?
Développeurs front-end souhaitant éviter la mise en conformité manuelle de dizaines d'attributs lors de chaque livraison graphique.
Ingénieurs Design System constituant des collections d'icônes cohérentes et typées.
Développeurs Full-Stack cherchant une intégration rapide et fiable sans avoir à mémoriser toutes les particularités de JSX.
Vos codes sources restent strictly confidentiels
Toutes les opérations de transformation se déroulent localement dans votre navigateur. Aucun code SVG n'est téléversé vers un serveur externe.