NextでのSVGの処理
に入る
プロジェクトは
svg
本プロジェクト開始前にテスト兼簡易プロジェクト!作りが難しすぎるのが心配ですこの程度なら….うまく書けないでしょう?!ほほほ
🤔 SVGとは?
SVG
ランScalable Vector Graphics
の略で、各位置値のベクトルなどを表す2次元グラフィック用XML
ベース形式です.XML(Extensible Markup Language)
W 3 Cが開発したもので、他の特殊目的を持つ表記言語を作成するためのマルチターゲット表記言語を推奨します.Webページでデータのラベル記述のドキュメントを交換(通信)します.SVG
所詮xml
の表記言語の種類は、css
およびjavascript
に変更可能です.実は、初めて
svg
ということで、デザイナーさんと協力してsvg
というイメージに触れました.😀なぜSVGを使うのですか?
PNG
私JPG
ビットマップベースの画像で、各項目に1つ以上の情報ビットがあることを示しています.SVG
ベクトルを元に各座標に点を付けた概念です.ベクトルベースのアイコンは、拡大または縮小してもアクティブになりません.うろこ写真を拡大すると画像が割れ、イラストはベクトルベースで割れていないのを覚えています.なぜsvgを使うのか理解します!
加えて容量が小さく、出力が速く、修正やアニメーションができる点で、多くのデザイナーが納得できる
svg
!コードを見てみましょう!
例として、このようなコードである拡大鏡の無料svgをダウンロードしました.
<?xml version="1.0" ?>
<svg id="Icons" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<defs>
<style>.cls-1{fill:#232323;}</style>
</defs>
<path class="cls-1" d="M18.856,14.624a10.022,10.022,0,1,0-4.234,4.234l4.254,4.255a2.994,2.994,0,1,0,4.239-4.23ZM2,10a8,8,0,1,1,8,8A8.009,8.009,0,0,1,2,10ZM21.7,21.708a1,1,0,0,1-1.4,0l-3.967-3.968a10.092,10.092,0,0,0,1.4-1.406L21.705,20.3a.976.976,0,0,1-.009,1.407Z"/>
<path class="cls-1" d="M10,4a6.006,6.006,0,0,0-6,6,1,1,0,0,0,2,0,4,4,0,0,1,4-4,1,1,0,0,0,0-2Z"/>
</svg>
⚄▼nextは、reactで使用するようにsvgを読み取ると、svgを読み取ることができないことを誤って指摘している.@svgr/webpackのインストール
エラーが発生したため、設置すべき
@svgr/webpack
yarn add -D @svgr/webpack
next.config.変更
改訂
next.config.js
module.exports = withTM({
reactStrictMode: true,
webpack: config => {
config.module.rules.push({
test: /\.svg$/i,
issuer: /\.[jt]sx?$/,
use: ["@svgr/webpack"]
});
return config;
}
});
svgをRealComponentとして作成します。
propsは色とサイズを受け取りました!
type IconProps = {
color?: string;
width?: number;
};
const Search = ({ color, width }: IconProps) => {
return (
<>
<svg
id="Icons"
width={`${width}px`}
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<defs>{<style>.cls-1{fill:#232323;}</style>}</defs>
<path
fill={color}
className="cls-1"
d="M18.856,14.624a10.022,10.022,0,1,0-4.234,4.234l4.254,4.255a2.994,2.994,0,1,0,4.239-4.23ZM2,10a8,8,0,1,1,8,8A8.009,8.009,0,0,1,2,10ZM21.7,21.708a1,1,0,0,1-1.4,0l-3.967-3.968a10.092,10.092,0,0,0,1.4-1.406L21.705,20.3a.976.976,0,0,1-.009,1.407Z"
/>
<path
fill={color}
className="cls-1"
d="M10,4a6.006,6.006,0,0,0-6,6,1,1,0,0,0,2,0,4,4,0,0,1,4-4,1,1,0,0,0,0-2Z"
/>
</svg>
</>
);
};
export default Search;
svgを使いましょう!
import Search from '@icon/Search';
export default function SearchInput({
name,
placeholder,
onChange,
}: TSearchInput) {
return (
<Inner>
<Input
type="text"
placeholder={placeholder}
name={name}
onChange={onChange}
/>
<Search width={20} color="#00C092" />
</Inner>
);
}
🎁 結果
大満足!😆😆😆
今はプロジェクトでいろいろな製品を使います!
Reference
この問題について(NextでのSVGの処理), 我々は、より多くの情報をここで見つけました https://velog.io/@april_5/Next에서-SVG-다루기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol