/react-svg-sprite

Inspired https://github.com/photodow/react-svg-sprite

Primary LanguageJavaScriptMIT LicenseMIT

Getting start

git clone <repo>
cd <directory>
npm install
npm run start
Переходим на https://localhost:8080/public_html

Структура

В файле src/svg-icons.js лежит коллекция иконок. Сами иконки представляют из себя объект вида:

{
    id: <string>,
    viewBox: <string>,
    source: <string>,
}

Для создание спрайта и добавления его в разметку используется компонент SvgSprite. Он принимает коллекцию иконок в свойство symbols.

<SvgSprite symbols={[{ ... }, ...]} />

На выходе получаем:

<svg style="display: block; width: 0; height: 0">
    <symbol id="..." viewBox="..."> ... </symbol>
    ...
</svg>

Для использование спрайта существует компонент SvgIcon, который принимает свойство name соотвествующий имени нужной иконки.

<SvgIcon name="<имя_иконки>" />

Компонент возвращает svg вида:

<svg class="icon icon_<имя_иконки>">
    <use xlink:href="#<имя_иконки>" />
</svg>

Features

  • автоматизация создания коллекции иконок (сейчас это нужно делать вручную)
  • добавление в разметку спрайта только с теми иконками, которые используются в данный момент и последующее динамическое добавление иконок в этот спрайт (чтобы не засорять разметку)