Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Quando o assunto é manter um projeto limpo, reutilizável e fácil de testar, integrar SVG como componente no React parece ser a solução ideal. Mas a dúvida é: qual a melhor prática para fazer isso sem transformar seu código em uma sopa de letrinhas?
Muita gente ainda tenta embutir SVG direto no JSX, o que até funciona, mas fica difícil de manter à medida que a quantidade de ícones cresce.
A abordagem mais inteligente que tenho visto é criar componentes específicos para cada SVG ou usar uma função que recebe o SVG como string e retorna um componente React. Assim, fica fácil de testar, reaproveitar e, principalmente, fazer ajustes finos sem quebrar o código. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
Para quem trabalha com TypeScript, o segredo é definir o retorno de forma clara, usando JSX.Element ou React.FC, garantindo que o componente seja tipado e integrado ao fluxo de desenvolvimento. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
E a dúvida que fica: até que ponto vale a pena criar componentes para cada SVG? Existe um limite prático ou é melhor adotar uma estratégia mais centralizada? Afinal, gerenciar uma biblioteca enorme de componentes pode acabar virando uma dor de cabeça. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois.
No meu ponto de vista, o ideal é balancear. Componentes pequenos, reutilizáveis, e uma estratégia de importação que não complique a vida do time. Como vocês têm feito por aí? Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
Concordo, e na hora de fazer uma depuração, ter SVG separado ajuda bastante.
Acho que o grande lance é evitar colocar SVG inline direto no JSX. Melhor criar componentes específicos ou usar uma função que importe o SVG e gere o componente. Dá mais controle e fica mais fácil de testar.
No meu time a gente tenta usar uma biblioteca de ícones, mas às vezes precisa de algo customizado.
Massaa, eu faria um arquivo de componentes SVG e importaria conforme a necessidade. Assim, fica fácil de manter e evita aquele problema de usar SVG inline que fica difícil de atualizar depois. E vocês, preferem usar alguma biblioteca ou criar tudo na mão?