74

I get the following error when trying to download svg as a React Component.

SyntaxError: unknown: Namespace tags are not supported by default. React's JSX doesn't support namespace tags. You can turn on the 'throwIfNamespace' flag to bypass this warning.

import React from "react";
import { ReactComponent as LO } from "../a/Logo.svg"
import { NavLink } from "react-router-dom";

const Logo = () => (
  <>
    <NavLink to={"/"}>
     <LO width={"40px"} height={"40px"} />
    </NavLink>
  </>
);

export default Logo;

What is the reason ?

Silicum Silium
  • 1
  • 6
  • 19
  • 49

5 Answers5

199

In the SVG file, try changing:

    sketch:type TO sketchType
    xmlns:xlink TO xmlnsXlink
    xlink:href  TO xlinkHref

etc...

The idea is to create camelCase property, remember that you are working with JSX, you are not creating a string as XML does.

Akash Kumar Verma
  • 2,954
  • 2
  • 14
  • 27
Frawel
  • 2,504
  • 1
  • 15
  • 11
24

Since we are in the JSX playground your SVG tags should be written as camelCase

So you can easily optimize your SVG using the link below to avoid this error :)

svgminify

Ahmad Salih
  • 373
  • 2
  • 7
6

The most simple solution is to just convert the SVG file to JSX.Then create a separate component or just copy paste the tag. This website does the job perfectly.

https://svg2jsx.com/

  • 2
    As it’s currently written, your answer is unclear. Please [edit] to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Feb 14 '22 at 15:56
  • Thank you tharusha, this is the winning answer for me! [svgminify](https://www.svgminify.com) did not fix the root issue: React throwing a wobbler at namespaces. – Sean Mizen Mar 24 '22 at 09:56
1

I had the same issue with all my svg files. Opening them in Adobe Illustrator and saving them again solved the issue.

Bozena Z.
  • 11
  • 1
0

I recommend using svgo to compress your SVG files. Simple CLI tool that runs with NodeJS and doesn't require you to upload your copyrighted SVGs anywhere.

devgioele
  • 41
  • 2
  • 8