Як динамічно змінювати кольори SVG в React за допомогою компонента React

Імпорт SVG - “React компонент”

Scalable Vector Graphics, або SVG, є популярним вибором для іконок та графіки в онлайн-застосунках. Однією з проблем, з якою стикаються розробники, є динамічна зміна кольорів SVG. Це можна елегантно реалізувати в React, використовуючи можливості зовнішніх CSS та синтаксис React компонента.

Ось як можна динамічно стилізувати SVG за допомогою React.

Чому варто використовувати SVG?

SVG має кілька переваг:

Масштабованість: Вони виглядають чудово на різних розмірах екранів та з різною роздільною здатністю.
Легкість: У порівнянні з графічними файлами, SVG часто мають менший розмір.
Кастомізованість: Ви можете використовувати CSS або інлайн стилі для зміни кольорів, розмірів та форм.

Звичний спосіб: Імпорт SVG як тегу img

Спочатку, коли я почав працювати з SVG, я імпортував їх у React ось так:

pic

Імпорт SVG у тег img

Цей спосіб добре працює для відображення зображення, але є велике обмеження: ви не можете динамічно змінювати колір SVG за допомогою CSS.

Після кількох годин пошуків в інтернеті, я нарешті знайшов просте і ефективне рішення: імпорт SVG як React компонента.

Переломний момент: Імпорт SVG як React компонента

Замість того, щоб імпортувати SVG як файл, ви можете імпортувати його як React компонент і стилізувати його динамічно.

Крок 1: Імпортуйте SVG як React компонент

pic

Імпорт React компонента

Крок 2: Використовуйте SVG компонент з класом

Тепер ви можете використовувати SVG як React компонент і додавати до нього className:

pic

Використання імпортованого React компонента в JS файлі

Крок 3: Визначте стилі у зовнішньому CSS файлі

Стилізуйте клас custom-icon у вашому CSS файлі за допомогою властивості fill:

pic

Додавання CSS

Крок 4: Видаліть атрибут fill з файлу SVG

Для того, щоб динамічне стилізування працювало, переконайтесь, що ви видалили всі fill атрибути з тегу `` або його дочірніх елементів у файлі SVG.

pic

Видалення fill з файлу SVG

Крок 5: Імпортуйте CSS файл

Нарешті, переконайтесь, що ваш CSS файл підключений до React компонента

pic

Фінальний код

Чому видалення атрибута fill є важливим
Стилі CSS, що застосовуються через властивість fill, будуть перекриті, якщо у файлі SVG вже є атрибут fill.
Видаляючи атрибут fill, ви надаєте CSS динамічний контроль над кольором SVG.

pic

Вивід

Чому цей підхід такий чудовий?

  1. Динамічне стилізування: Легко змінюйте кольори, розміри та ефекти при наведенні за допомогою CSS.
  2. Перевикористовувані компоненти: Застосовуйте різні стилі до одного й того ж SVG, змінюючи className.
  3. Чистий код: Тримайте вашу кодову базу чистою, розділяючи стилі та компоненти.

pic

Якщо вам важко було динамічно стилізувати SVG, цей підхід змінить гру. Спробуйте його та розкрийте повний потенціал SVG в React!

Чи було це корисно? Дайте знати, як це працює для ваших проєктів!

Перекладено з: How to Dynamically Change SVG Colors in React Using React Component

Leave a Reply

Your email address will not be published. Required fields are marked *