Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

Sorry, you do not have permission to ask a question, You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please type your username.

Please type your E-Mail.

Please choose an appropriate title for the post.

Please choose the appropriate section so your post can be easily searched.

Please choose suitable Keywords Ex: post, video.

Browse

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Logo Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Logo

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Navigation

  • Home
  • About Us
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • About Us
  • Contact Us
Home/ Questions/Q 8288

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Latest Questions

Author
  • 60k
Author
Asked: November 28, 20242024-11-28T11:44:09+00:00 2024-11-28T11:44:09+00:00

4 Formas de usar SVG em projetos React

  • 60k

Uma pergunta bem comum quando vamos trabalhar com imagens em nossas aplicações é “que formato de imagem usar”. De maneira geral, quando vamos lidar com imagens detalhadas, como fotos, não há dúvida de que os formatos .png ou .jpg são nossas escolhas.

Porém, usar apenas esses formatos pra tudo pode deixar sua aplicação mais pesada sem necessidade. Então, quando precisamos de imagens mais simples, como logos e ícones, a escolha mais adequada é seguir com gráficos vetoriais. E é aí que entra o formato .svg, sigla em inglês para Gráficos Vetoriais Escaláveis.

E quando utilizamos gráficos SVG com React, temos algumas formas diferentes de utilizar esses arquivos. Que tal conhecer algumas dessas possibilidades?

Sumário
SVG na tag img
SVG como background-image
SVG como JSX
SVG como ReactComponent
SVG: vantagens e desvantagens


SVG na tag img

O método mais conhecido e mais utilizado é usar a palavra-chave import para importar o arquivo SVG e usá-lo de forma estática no src da tag <img>.

import Logo from '../assets/logo.svg';  const Button = () => {   return (     <button>       <img src={Logo} alt='Logotipo do App' />     </button>   ); }; 
Enter fullscreen mode Exit fullscreen mode


SVG como background-image

Também é possível usar SVG no CSS como background ou background-image, indicando diretamente o caminho de pasta da imagem:

.container {   background-image: url('./assets/logo.svg') no-repeat; } 
Enter fullscreen mode Exit fullscreen mode


SVG como JSX

Essa forma de uso é quase a mesma coisa de colocar a tag <svg> diretamente no HTML, que é uma prática bastante comum e que permite a customização do SVG.

Porém, no React, esse uso se torna melhor, pois você pode utilizar o SVG como um componente JSX, deixando o seu código menos verboso e mais organizado. Isso é possível porque os SVGs são escritos em XML (quase um HTML).

Para isso, existem ferramentas online que podem te ajudar a fazer essa conversão, como o site SVG 2 JSX.

// TAG <svg> <svg width='14' height='14' viewBox='0 0 14 14'>   <rect class='cls-1' width='14' height='2' /> </svg>  // COMPONENTE JSX function Icon() {   return (     <svg width='14' height='14' viewBox='0 0 14 14'>       <path d='M0 0H14V2H0z' className='cls-1' />     </svg>   ); };  export default Icon; 
Enter fullscreen mode Exit fullscreen mode


SVG como ReactComponent

Se você tiver um projeto inicializado com create-react-app, também é possível importar o SVG diretamente, como um ReactComponent:

import { ReactComponent as Logo } from './assets/logo.svg';  const App = () => (   <div id='App'>     <Logo />   </div>     );  export default App; 
Enter fullscreen mode Exit fullscreen mode


Mas se você inicializou seu projeto com Vite, é necessário instalar o pacote vite-plugin-svgr e refatorar o seu vite.config.js com essa configuração abaixo para que isso funcione:

import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import svgr from 'vite-plugin-svgr';  export default defineConfig({   plugins: [     react(),     svgr()   ], }); 
Enter fullscreen mode Exit fullscreen mode


SVG: vantagens e desvantagens

Existem vários benefícios em utilizar SVG em seus projetos, porém, também é necessário saber usá-lo bem. Abaixo listo brevemente algumas vantagens e desvantagens dos gráficos SVG:

  • São editáveis;
  • São facilmente escaláveis sem perder a qualidade, inclusive em impressões;
  • Podem ser animados pelo CSS;
  • Seu uso é flexível, podendo ser manipulado também via JavaScript;
  • São arquivos leves;
  • Se usadas corretamente, as imagens SVG podem ser benéficas para o SEO, pois são indexáveis pelas engines de busca;

Porém…

  • Não são suportados por browsers mais antigos;
  • Normalmente não são muito detalhados, por isso são indicados para logotipos e ícones.

Espero que este artigo te traga boas experiências em seus próximos projetos com React. Um xêro pra vocês!


Fontes:

  • LogRocket: How to use SVGs in React
  • Creatif Fish: Advantages and disadvantages of SVG

braziliandevsfrontendreactwebdev
  • 0 0 Answers
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

Sidebar

Ask A Question

Stats

  • Questions 4k
  • Answers 0
  • Best Answers 0
  • Users 1k
  • Popular
  • Answers
  • Author

    How to ensure that all the routes on my Symfony ...

    • 0 Answers
  • Author

    Insights into Forms in Flask

    • 0 Answers
  • Author

    Kick Start Your Next Project With Holo Theme

    • 0 Answers

Top Members

Samantha Carter

Samantha Carter

  • 0 Questions
  • 20 Points
Begginer
Ella Lewis

Ella Lewis

  • 0 Questions
  • 20 Points
Begginer
Isaac Anderson

Isaac Anderson

  • 0 Questions
  • 20 Points
Begginer

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help

Footer

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise

Querify Question Shop: Explore, ask, and connect. Join our vibrant Q&A community today!

About Us

  • About Us
  • Contact Us
  • All Users

Legal Stuff

  • Terms of Use
  • Privacy Policy
  • Cookie Policy

Help

  • Knowledge Base
  • Support

Follow

© 2022 Querify Question. All Rights Reserved

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.