Вернуться к блогу

Руководство по импорту SVG в React Native: react-native-svg + SvgXml

Узнайте о двух практических способах использования SVG в React Native с react-native-svg: импорте через transformer и динамическом рендеринге с помощью SvgXml.

26 янв. 2026 г.React NativeSVGreact-native-svgРазработка мобильных приложенийИнтеграция SVGreact-native-svg-transformer

Руководство по импорту SVG в React Native: react-native-svg + SvgXml

SVG (масштабируемая векторная графика) стал одним из ключевых форматов графических ресурсов в разработке React Native. По сравнению с привычными растровыми форматами вроде PNG и JPG, SVG дает масштабирование без потери качества, меньшие размеры файлов и более гибкий контроль над стилями. В этом руководстве разобраны два практических способа импорта и использования SVG в проектах React Native с понятными примерами и рекомендациями по производительности.

Почему использовать SVG в React Native

SVG дает несколько важных преимуществ при разработке мобильных приложений:

  • Идеальное масштабирование: Графика остается четкой независимо от размера или разрешения экрана
  • Меньший размер файла: Файлы SVG обычно легче нескольких наборов растровых ресурсов
  • Динамическая стилизация: цвета, размеры и другие атрибуты можно менять через свойства компонента
  • Согласованность: Отображается идентично на обеих платформах iOS и Android

Основная зависимость: react-native-svg

Первый шаг к работе с SVG в React Native — установка библиотеки react-native-svg, которая позволяет нативно отображать SVG-файлы в приложении.

npm install react-native-svg
# или
yarn add react-native-svg

Примечание: Для React Native 0.60 и выше связывание обычно автоматическое. Для более ранних версий может потребоваться ручная компоновка нативных модулей.

Способ 1: Использование react-native-svg-transformer

Это наиболее рекомендуемый подход, позволяющий импортировать файлы SVG напрямую как компоненты, как в веб-проектах React.

Установка и настройка

  1. Установите трансформер:
npm install --save-dev react-native-svg-transformer
  1. В metro.config.js:
const { getDefaultConfig } = require('expo/metro-config');
const transformer = require('react-native-svg-transformer');

module.exports = (async () => {
  const defaultConfig = await getDefaultConfig(__dirname);
  return {
    ...defaultConfig,
    transformer: {
      ...defaultConfig.transformer,
      babelPlugins: ['react-native-svg-transformer'],
    },
  };
})();

Использование

import MyIcon from './my-icon.svg';

function App() {
  return (
    <View>
      <MyIcon width={24} height={24} fill="red" />
    </View>
  );
}

Способ 2: Использование SvgXml

Для получения SVG из строки или динамической загрузки:

import { SvgXml } from 'react-native-svg';

const svgString = `<svg width="24" height="24" viewBox="0 0 24 24">
  <circle cx="12" cy="12" r="10" fill="red" />
</svg>`;

function App() {
  return <SvgXml xml={svgString} width={24} height={24} />;
}

Выбор способа

  • Статический импорт: используйте react-native-svg-transformer для файлов, являющихся частью кода
  • Динамический рендеринг: используйте SvgXml для файлов, загружаемых из сети или хранилища

Резюме

Оба способа работают хорошо. Выберите тот, который лучше подходит под структуру проекта и способ доставки графики в приложении.

Связанные статьи

Продолжайте изучать рабочие процессы SVG и советы по продакшну.