ReactでSVGを扱う

本当にあった怖いSVGアイコンの話
https://zenn.dev/t_keshi/articles/react-neat-icon

SVGRを使ってSVGをReactComponentに変換する方法

SVGRの公式サイトにアクセスすると、初っ端から「React アプリケーションで SVG を利用するための最高のツール」的な説明が書いてあって、我々の求めていたものだ感があります。手軽な SVGR の導入方法は、下記のSVGR praygroundを使って、Web上でReactComponentに変換してしまうことです。

npm install vite-plugin-svgr --save-dev

viteの設定ファイルに下記項目を追加する。

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
 import svgr from 'vite-plugin-svgr'

// https://vitejs.dev/config/
export default defineConfig({
 plugins: [
   react(),
    svgr()
 ]
})
import './App.css'
import SvgComponent1 from './assets/honey-svgrepo-com.svg?react';

function App() {

  return (
    <>
      <h1>React + SVGR</h1>
      <SvgComponent1 style={{width:'300px', height:'300px'}}/>
    </>
  )
}

export default App

この ?react は、ViteがSVGR(SVGをReactコンポーネントとしてインポートするためのツール)を使用していることを認識するためのクエリパラメータです。

?react を付けることで、SVGのコードに直接CSSを適用したり、内部のパスを変更したりといった、コンポーネントならではの操作が可能になります。