Как поменять цвет SVG в React-приложении

React позволяет при импорте svg-изображений получать готовый компонент, который мы можем стилизовать через CSS, либо же задавать цветовые пропсы.
Пример из урока: codesandbox.io/s/damp-star-gb52z
Мои курсы по вебу с купонами:
✅ mishanep.com/
📢 Поддержка канала:
/ mishanep
www.tinkoff.ru/rm/nepomnyasch...
paypal.me/mishanep

Пікірлер: 89

  • @ArseniyBendyukov
    @ArseniyBendyukov2 жыл бұрын

    Отличное видео, полезное. Я, признаться честно, даже не догадывался о том, что возможность работы с svg доступна из коробки - даже мысли загуглить не было. Я поступал так: создавал HOC, который добавляет возможность задавать для svg проп size и проп style. Также задавал отдельные пропы для цвета, толщины обводки, если такое было нужно. Обязательно исправлю теперь этот костыль в своем учебном проекте!

  • @azamumarov182
    @azamumarov182 Жыл бұрын

    Ваш канал очень полезен для меня и всех начинающих на React, спасибо большое за полезную информацию и отличную подачу контента!

  • @sweatdreams2200
    @sweatdreams2200 Жыл бұрын

    Первый раз попал на Ваш канал, через это видео. А тут же кладезь всего) спасибо вам за работу!

  • @kyryloovsiannik7207
    @kyryloovsiannik72072 жыл бұрын

    Спасибо и не останавливайся. Очень интересный и полезный контент.

  • @user-rz1kq8oz4f
    @user-rz1kq8oz4f2 жыл бұрын

    Огромное спасибо!!! Это очень полезно!!! много ломал голову над этим вопросом! +в карму)))

  • @evgeny9945
    @evgeny99457 ай бұрын

    на таких людях держится мир, спасибо

  • @Nuts_Cracker
    @Nuts_Cracker2 жыл бұрын

    Спасибо большое за полезный контент!

  • @user-gb8df3mg7u
    @user-gb8df3mg7u Жыл бұрын

    Безумно полезное видео, спасибо большое!)

  • @user-cu2ng7gf4k
    @user-cu2ng7gf4k Жыл бұрын

    ролик выручил меня! спасибо!

  • @user-kf8fw2hm1m
    @user-kf8fw2hm1m2 жыл бұрын

    Почему я не нашел это видео час назад? Мужик, ты просто лучший.

  • @yeppiee939
    @yeppiee9392 жыл бұрын

    Отличное видео, спасибо, как раз на учебном проекте пригодится! :)

  • @user-artem-busyhin
    @user-artem-busyhin2 жыл бұрын

    Супер. Огромное спасибо!

  • @user-ml4ul2xk9l
    @user-ml4ul2xk9l27 күн бұрын

    спасибо большое. очень полезная вещь

  • @CmapnepTV
    @CmapnepTV Жыл бұрын

    Спасибо, помогло очень при разработке моего приложения!

  • @prandrey2153
    @prandrey21532 жыл бұрын

    Ты супер! Обожаю! Я наверное уже час ищу как сделать правильно)))

  • @koshgosh3081
    @koshgosh30817 ай бұрын

    как всегда, все легко понимается), спасиб

  • @ahmadumarov2845
    @ahmadumarov2845 Жыл бұрын

    спасибо за хорошее видео) узнал что то интересное

  • @SergAlexson
    @SergAlexson2 жыл бұрын

    Спасибо! Очень полезно

  • @user-bp7jb5of5d
    @user-bp7jb5of5d2 жыл бұрын

    Михаил. Спасибо огромное. Очень полезное видео. А то я раньше мучился с создание svg иконок другого цвета и заменой их в DOM по условию на hover…

  • @detlolkarus2461
    @detlolkarus24612 жыл бұрын

    Спасибо большое!

  • @mishashmidt0
    @mishashmidt02 жыл бұрын

    спасибо! очень полезно

  • @newageteam
    @newageteam Жыл бұрын

    спасибо, очень выручили

  • @user-so1bu9cw5g
    @user-so1bu9cw5g Жыл бұрын

    Отличный видос! Спасибо большое. Я правильно понял, что это альтернатива react-icons/font-awsome?

  • @user-ic4dk4sp3y
    @user-ic4dk4sp3y2 жыл бұрын

    круто круто круто, колокольчик помог не пропустить))

  • @happy_cutman
    @happy_cutman2 жыл бұрын

    Шикарно))

  • @Iepka_Roblox
    @Iepka_Roblox6 ай бұрын

    Спасибо!

  • @onlynowmotivation
    @onlynowmotivation2 жыл бұрын

    Спасибо!!!

  • @user-bd8ph2nh5b
    @user-bd8ph2nh5b2 жыл бұрын

    Лучшее решение! До этого я столкнулся с такой проблемой и все что нагуглил это css filter для ховера, либо скопипастить svg иконки изменив цвет

  • @mishanep

    @mishanep

    2 жыл бұрын

    Я встречал оба варианта в продакшн коде)))

  • @tirthadeva_yoga
    @tirthadeva_yoga2 ай бұрын

    Миша, спасибо большое 🙏🏻 очень полезно. Как раз недавно была такая необходимость покрасить svg в другой цвет. Пытался через css это сделать, но ничего не вышло.

  • @NovikovEugene84
    @NovikovEugene845 ай бұрын

    Спасибо огромное. Очень в тему. Идеальное решение. Единственно, раз уж дело касается Реакта, то можно было ещё пример с map-функцией.

  • @true227

    @true227

    4 ай бұрын

    что за мап функция? Просто метод массива map?

  • @rostikalekseev
    @rostikalekseev Жыл бұрын

    Лучший

  • @alexandervinnik2726
    @alexandervinnik2726 Жыл бұрын

    Подход очень крутой. Но возникает вопрос: а что делать если иконка передается динамически, у одной может быть fill, а у другой stroke, и указание цвета для fill приводит к заполнению вовсе не там где хочется?

  • @dimama1551
    @dimama15512 жыл бұрын

    красава

  • @pw8749
    @pw87492 жыл бұрын

    Спасибо видео помогло. Мне как раз надо покрасить иконки для соц сетей. Долго ломал голову, почему не работает свойство fill.

  • @leram3198
    @leram31987 ай бұрын

    Спасибо за видео, а есть ли подобный способ, если иконка svg добавляется не через JSX, а бэкграундом для ::before у соответствующего элемента? На hover элемента мне нужно менять цвет иконки, сейчас в проекте это реализовано так, что просто подгружается другая иконка с другим цветом, работает это долго и в первый раз в момент наведения она как бы "мигает", так как другая иконка не успевает подгрузиться. Хотелось бы какое-то нормальное решение по смене цвета через css :(

  • @magerrrr
    @magerrrr2 жыл бұрын

    Спасибо большое! полезное видео, стало понятно, что же такое current этот) Подскажи пожалуйста - в create react app с свг все ок по дефолту, а когда ты сам конфиг пишешь для вебпака с нуля, что необходимо сделать, чтобы поведение было таким же для свг иконок?) указать путь к папке с ними (например src/assets) и указать лоудер типо @svgr/webpack для расширения svg? Мне кажется я понимаю, но хочу для себя прояснить по пунктам - например при настройке конфига в вебпаке для работы с свг мы должны - 1 пункт, 2 пункт и 3 пункт.... Буду как всегда очень благодарен, если пояснишь) Спасибо!

  • @mishanep

    @mishanep

    2 жыл бұрын

    Скорее всего да, вручную нужно добавлять тогда преобразования. Как именно не подскажу, не реализовывал.

  • @from_brest2631
    @from_brest26312 жыл бұрын

    Лайк

  • @user-ld9pc9vh7n
    @user-ld9pc9vh7n Жыл бұрын

    👍👍👍

  • @armankhoyetsyan4705
    @armankhoyetsyan47052 жыл бұрын

    👍👍👍👍

  • @kirillkhvorikov9470
    @kirillkhvorikov94702 жыл бұрын

    Вот бы проэктик какой ни будь посмотреть. React + Redux + NodeJS)))

  • @stern2936
    @stern29362 жыл бұрын

    Вовремя, прям как мана небесная)

  • @velikorossnationalist4259
    @velikorossnationalist4259 Жыл бұрын

    Здравствуйте! Как интересно такие стили применить в Chakra UI? svg { color: green; cursor: auto; } svg:has(rect:hover) { color: red; cursor: pointer; } svg path { opacity: 0; transition: .6s; } svg:has(rect:hover) path { opacity: 1; }

  • @ursidae9
    @ursidae9 Жыл бұрын

    Большое спасибо за видео! Очень полезно! Если правильно пониманию, то этот способ позволяет закрасить свг только одним цветом. А если внутри несколько филов, как им передавать нужные значения?

  • @mishanep

    @mishanep

    Жыл бұрын

    Через css можно попробовать псевдоселектор :nth-child

  • @sasdasaasdasdasdadad5354
    @sasdasaasdasdasdadad53542 жыл бұрын

    как вы считаете ,что лучше использовать styledcomponents или css modules / для новичка ?

  • @mishanep

    @mishanep

    2 жыл бұрын

    Для новичка однозначно модулей будет достаточно

  • @RD-or5go
    @RD-or5go11 ай бұрын

    А как тоже свмое сделать в Typescript?)

  • @paulsekishov4143
    @paulsekishov41432 жыл бұрын

    Привет Михаил! Можешь сделать видео работой с svg-sprites в REACT

  • @mishanep

    @mishanep

    2 жыл бұрын

    Приветствую! Никогда не работал с svg-sprites =) Если доведется, то и про видео можно будет подумать.

  • @paulsekishov4143
    @paulsekishov41432 жыл бұрын

    Я скачал макет для теста и в нём Header имел 100vh и тут я столкнулся с тем сто css не работает так как App является вложенным в структуре DOM есть ли какие-то решения чтоб меньше дебажить верстку? Обычно этот ефект привязан к Body. Считаю что это связано с тем что здесь сталкиваются два DOMa один статичный другой виртуальный (APP React Component)

  • @mishanep

    @mishanep

    2 жыл бұрын

    Здравствуйте. В реакт приложении нет никаких ограничений на использование vh. Тот же хэдер спокойно можно растянуть на экран и наличие корневого элемента (промежуточного относительно body) здесь не является помехой.

  • @true227
    @true2274 ай бұрын

    если у вас сборщик Vite, то для свг устанавливаете плагин vite-plugin-svgr , описание по подключению на его странице. В конце строке пути импорта файла свг не забудьте указать ?react , импортируете без ReactComponent, а просто пишете нужное имя элемента. И еще у меня почему-то пропал импорт самого реакта в App.js, его в этом случае добавьте и все заработает

  • @elenam4363

    @elenam4363

    17 күн бұрын

    Спасибо!

  • @izzy7541
    @izzy75412 жыл бұрын

    Разве это реакт все делает? По моему это работает только в create-react-app, так-как там в конфиге вебпака есть плагин svgr, который и позволяет импортировать так иконки. Или я ошибаюсь?

  • @mishanep

    @mishanep

    2 жыл бұрын

    Скорее всего вы правы.

  • @MrHackzack
    @MrHackzack3 ай бұрын

    ничего не понятно, но очень интересно. Как повторить это все в домашних условиях?

  • @mishanep

    @mishanep

    3 ай бұрын

    Зависит от настроек сборки проекта. В видео используется утилита create-react-app где данный функционал идёт из коробки. Как настроить для vite или rsbuild - у меня есть шортс на канале об этом

  • @aleksprimetv
    @aleksprimetv2 жыл бұрын

    Их можно еще оборачивать в функции и экспортировать, а импортировать как обычный компонент.

  • @mishanep

    @mishanep

    2 жыл бұрын

    Безусловно. Так обычно и выглядят современные библиотеки с готовыми svg иконками.

  • @arslan5919
    @arslan5919 Жыл бұрын

    Module '"*.svg"' has no exported member 'ReactComponent'. Did you mean to use 'import ReactComponent from "*.svg"' instead?ts(2614)

  • @mishanep

    @mishanep

    Жыл бұрын

    Типизацию просит :) здесь надо смотреть что вы для сборки использовать и читать соответствующую документацию

  • @arslan5919

    @arslan5919

    Жыл бұрын

    @@mishanep Спасибо большое. Решил. Для vite отдельный плагин отказывается был.

  • @joyful_hunter

    @joyful_hunter

    Жыл бұрын

    @@arslan5919 Подскажите, пожалуйста, какой?

  • @true227

    @true227

    4 ай бұрын

    @@joyful_hunter vite-plugin-svgr

  • @smidvard
    @smidvard Жыл бұрын

    У меня не работает вот ошибка "Uncaught SyntaxError: The requested module '/public/svg/air_qualitu.svg?import' does not provide an export named 'ReactComponent"

  • @mishanep

    @mishanep

    Жыл бұрын

    Если проект на TypeScript, то скорее всего типы для svg ничего не знают о ReactComponent.

  • @smidvard

    @smidvard

    Жыл бұрын

    @@mishanepНе на js

  • @mishanep

    @mishanep

    Жыл бұрын

    @@smidvard а собираете чем?

  • @smidvard

    @smidvard

    Жыл бұрын

    @@mishanep vite

  • @mishanep

    @mishanep

    Жыл бұрын

    @@smidvard понятно. Пример был из сборщика create-react-app, где под капотом реализуется такая штука для svg. Для vite надо читать доку как добиться того же самого. С ходу не отвечу.

  • @romanmed9035
    @romanmed90352 жыл бұрын

    неожиданное решение. а есть ли видео для начинающих в реакт? чтобы совсем кто даже и терминала в руках не держал?

  • @mishanep

    @mishanep

    2 жыл бұрын

    @Roman Med есть целый курс по Реакт для начинающих. Ссылки на курсы есть в описании под каждым видео.

  • @romanmed9035

    @romanmed9035

    2 жыл бұрын

    @@mishanep спасибо. ибо в чатах надо начинающих куда-то направлять где будет полезно. ибо уже нет терпения простейшее описывать.

  • @AmericanDragon134
    @AmericanDragon1342 жыл бұрын

    Полезное видео. ' * ' что это означает

  • @mishanep

    @mishanep

    2 жыл бұрын

    Универсальный селектор. Что угодно.

  • @nikitaermolenko7813
    @nikitaermolenko7813 Жыл бұрын

    А как без react красить свг?:)

  • @nikitaermolenko7813

    @nikitaermolenko7813

    Жыл бұрын

    Неужели кодом вставлять

  • @mishanep

    @mishanep

    Жыл бұрын

    В Реакте после сборки оно кодом и вставляется. Есть разные способы добавления svg на страницу, но не все позволяют стилизовать элемент. Если просто верстаете, то да, кодом вставлять =)

  • @nikitaermolenko7813

    @nikitaermolenko7813

    Жыл бұрын

    @@mishanep жеееесть

  • @romanstoleru7936
    @romanstoleru79362 жыл бұрын

    тот случай когда ты новоичек и просто посмотрел 5 мин видео и не чего не понял xD

  • @Surov000
    @Surov000 Жыл бұрын

    а слабо видос не про 2+2 записать, а анимировать хотябы трехцветную svg с эффектами на разных элементах? Капитанская инфа есть везде, в чем смысл ее заливать

  • @mishanep

    @mishanep

    Жыл бұрын

    Если вы почитаете соседние комментарии, то смысл делать подобные видео станет очевидным.

  • @Surov000

    @Surov000

    Жыл бұрын

    @@mishanep без негатива, хочется поднять скил в обращении с свг, но хардовых гайдов не могу найти.

  • @mishanep

    @mishanep

    Жыл бұрын

    @@Surov000 попробуйте FrontendMasters frontendmasters.com/courses/?q=svg

  • @unhandled_error
    @unhandled_error2 жыл бұрын

    Спасибо!