UTILS.
‎100%‎ داخل المتصفح
🎨

من SVG إلى مكوّن JSX

حوّل ترميز SVG الخام إلى مكوّن React جاهز للاستخدام بسمات camelCase، ونشر props، وخيارات currentColor وforwardRef.

— يظهر المخرج هنا —

حول هذه الأداة

تحوّل أداة من SVG إلى مكوّن JSX ترميز SVG الخام إلى مكوّن React نظيف، كما تفعل SVGR، لكن بالكامل في متصفحك دون رفع أي شيء. الصق أيقونة مُصدَّرة من أداة تصميم واحصل على مكوّن يمكنك استيراده وتنسيقه. تحلّل SVG باستخدام DOMParser وتُبلِغ عن خطأ واضح إذا كان الترميز مشوّهًا.

كل سمة SVG مُعرّفة بشرطة أو بمساحة أسماء تُحوَّل إلى camelCase لاسمها في React — stroke-width إلى strokeWidth، وfill-rule إلى fillRule، وclip-path إلى clipPath، وstop-color إلى stopColor، وxlink:href إلى xlinkHref، وxmlns:xlink إلى xmlnsXlink — بينما تُترَك سمات data-* وaria-* كما هي. تصبح سلاسل الأنماط المضمّنة كائنات style، وتُغلَق العناصر الفارغة مثل path وcircle ذاتيًا، وتُنشَر props على الجذر <svg {...props}> كي يظل المكوّن قابلًا للتهيئة. تتيح لك مفاتيح اختيارية استبدال قيم fill وstroke المُرمَّزة بـ currentColor (كي ترث الأيقونة لون النص)، وتجريد width وheight كي تتحجّم لحاويتها، وتغليف المكوّن بـ forwardRef لكشف عقدة <svg> الأساسية.

اختر مُخرَج JavaScript أو TypeScript: يُنمِّط متغيّر TypeScript props كـ React.SVGProps<SVGSVGElement>، ومع تفعيل forwardRef، يستخدم forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>. يُصدَر المكوّن كدالة سهم مُصدَّرة (export const Icon = (props) => (...))، باسمك المختار ومسافتك البادئة، جاهزًا للّصق في وحدة أيقونات.

الأسئلة الشائعة

كيف تُحوَّل سمات SVG؟
السمات المُعرّفة بشرطة أو بنقطتين لمساحة الأسماء تُحوَّل إلى camelCase لمكافئاتها في React: stroke-width إلى strokeWidth، وfill-rule إلى fillRule، وxlink:href إلى xlinkHref. تُحفَظ سمات data-* وaria-*. تصبح الأنماط المضمّنة كائنات style.
ماذا يفعل خيار currentColor؟
يستبدل قيم لون fill وstroke المُرمَّزة (أي شيء غير none) بـ "currentColor"، فيرث SVG لون النص المحيط ويمكن إعادة تلوينه بخاصية CSS color عادية على الأب.
لماذا تُنشَر props على svg؟
نشر {...props} على الجذر <svg> يتيح للمستدعين تمرير className وwidth وonClick وتسميات aria وأي props أخرى لـ SVG إلى المكوّن. ومع تفعيل forwardRef، يُمرَّر ref أيضًا إلى العنصر الأساسي.
ما الفرق بين مُخرَج JS وTS؟
مُخرَج TypeScript يُنمِّط props كـ React.SVGProps<SVGSVGElement>، ومع forwardRef يستخدم forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>. مُخرَج JavaScript يحذف تعليقات النوع لكنه مطابق فيما عدا ذلك.

المزيد من الأدوات