Join egghead, unlock knowledge.

Want more egghead?

This lesson is for members. Join us? Get access to all 3,000+ tutorials + a community with expert developers around the world.

Unlock This Lesson

Already subscribed? Sign In

Autoplay

    Render Basic SVG Components in React

    Basarat Ali SyedBasarat Ali Syed

    React loves svg just as much as it loves html. In this lesson we cover how simple it is to make SVG components in ReactJS.

    Creating SVG components with React allows you to inline SVG. Inline SVG has an advantage that it can be styled with CSS just like the rest of your webpage and doesn't need a separate web request to load.

    An additional advantage is of-course that you can use component props to customize the contents of the SVG.

    reactReact
    Code

    Code

    Become a Member to view code

    You must be a Member to view code

    Access all courses and lessons, track your progress, gain confidence and expertise.

    Become a Member
    and unlock code for this lesson
    Transcript

    Transcript

    00:00 Here, I have a simple HTML page with a div ID root where I am rendering this app component, which simply renders out the text demo. If I go ahead and change it to "Hello World," you can see that the page updates.

    00:20 We are going to replace the HTML in the component with SVG. Here, I have a simple SVG file that renders an "I." If I go ahead and view its source, I can select all of it and copy it to the clipboard.

    00:35 I am going to replace the div with the contents of the SVG file. You can see that I get a few errors. In this case, it is a matter of moving the XML link spaces, as those are no longer required. As soon as I do that, you can see that the SVG gets rendered by React.

    00:55 With React, we can easily customize the contents of the SVG. For example, I can customize the width using a size property which I am going to default to the previous value. I am also going to use the size for height and for width.

    01:19 You can see the component still renders the same, but now I can provide a different size property, for example 100 pixels, and the component renders a bit bigger.

    Discuss

    Discuss