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

Поділитися
Вставка
  • Опубліковано 29 лис 2024

КОМЕНТАРІ • 90

  • @evgeny9945
    @evgeny9945 Рік тому +1

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

  • @ArseniyBendyukov
    @ArseniyBendyukov 2 роки тому +8

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

  • @azamumarov182
    @azamumarov182 Рік тому +1

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

  • @sweatdreams2200
    @sweatdreams2200 2 роки тому +1

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

  • @ТимурМоисеев-н8ь
    @ТимурМоисеев-н8ь 2 роки тому

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

  • @АрчибальтГугенов

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

  • @ТриоЛяро
    @ТриоЛяро 2 роки тому

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

    • @mishanep
      @mishanep  2 роки тому

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

  • @Дима-п7х6л
    @Дима-п7х6л 2 роки тому

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

  • @kyryloovsiannik7207
    @kyryloovsiannik7207 2 роки тому

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

  • @koshgosh3081
    @koshgosh3081 Рік тому

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

  • @VasiliyAlexsandrovich
    @VasiliyAlexsandrovich 6 місяців тому

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

  • @ЕленаДавыдик-м4я
    @ЕленаДавыдик-м4я 2 роки тому

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

  • @CmapnepTV
    @CmapnepTV 2 роки тому

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

  • @prandrey2153
    @prandrey2153 2 роки тому

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

  • @СергейКузнецов-э4я2я

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

  • @Nuts_Cracker
    @Nuts_Cracker 2 роки тому

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

  • @user-artem-busyhin
    @user-artem-busyhin 2 роки тому

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

  • @yeppiee939
    @yeppiee939 2 роки тому

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

  • @ahmadumarov2845
    @ahmadumarov2845 Рік тому

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

  • @NovikovEugene84
    @NovikovEugene84 10 місяців тому

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

    • @true227
      @true227 10 місяців тому +1

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

  • @true227
    @true227 10 місяців тому

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

    • @elenam4363
      @elenam4363 6 місяців тому +1

      Спасибо!

  • @ЕвгенийШут-о7н
    @ЕвгенийШут-о7н 2 роки тому

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

  • @newageteam
    @newageteam Рік тому

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

  • @SergAlexson
    @SergAlexson 2 роки тому

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

  • @alexandervinnik2726
    @alexandervinnik2726 2 роки тому +2

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

  • @АлексейСтепанов-к9о

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

  • @detlolkarus2461
    @detlolkarus2461 2 роки тому

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

  • @happy_cutman
    @happy_cutman 2 роки тому

    Шикарно))

  • @tirthadeva_yoga
    @tirthadeva_yoga 7 місяців тому

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

  • @leram3198
    @leram3198 Рік тому

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

  • @rostikalekseev
    @rostikalekseev 2 роки тому

    Лучший

  • @pw8749
    @pw8749 2 роки тому

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

  • @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;
    }

  • @arslan5919
    @arslan5919 Рік тому +2

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

    • @mishanep
      @mishanep  Рік тому +1

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

    • @arslan5919
      @arslan5919 Рік тому +2

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

    • @joyful_hunter
      @joyful_hunter Рік тому +1

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

    • @true227
      @true227 10 місяців тому

      @@joyful_hunter vite-plugin-svgr

  • @MrHackzack
    @MrHackzack 9 місяців тому

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

    • @mishanep
      @mishanep  9 місяців тому +1

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

  • @onlynowmotivation
    @onlynowmotivation 2 роки тому

    Спасибо!!!

  • @izzy7541
    @izzy7541 2 роки тому +1

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

    • @mishanep
      @mishanep  2 роки тому

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

  • @stern2936
    @stern2936 2 роки тому

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

  • @RD-or5go
    @RD-or5go Рік тому

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

  • @smidvard
    @smidvard Рік тому +1

    У меня не работает вот ошибка "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  Рік тому +1

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

    • @smidvard
      @smidvard Рік тому

      @@mishanep vite

    • @mishanep
      @mishanep  Рік тому +1

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

  • @kirillkhvorikov9470
    @kirillkhvorikov9470 2 роки тому

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

  • @magerrrr
    @magerrrr 2 роки тому

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

    • @mishanep
      @mishanep  2 роки тому +1

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

  • @sasdasaasdasdasdadad5354
    @sasdasaasdasdasdadad5354 2 роки тому

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

    • @mishanep
      @mishanep  2 роки тому

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

  • @ursidae9
    @ursidae9 Рік тому

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

    • @mishanep
      @mishanep  Рік тому

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

  • @aleksprimetv
    @aleksprimetv 2 роки тому

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

    • @mishanep
      @mishanep  2 роки тому

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

  • @paulsekishov4143
    @paulsekishov4143 2 роки тому

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

    • @mishanep
      @mishanep  2 роки тому +1

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

  • @paulsekishov4143
    @paulsekishov4143 2 роки тому

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

    • @mishanep
      @mishanep  2 роки тому +2

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

  • @dimama1551
    @dimama1551 2 роки тому

    красава

  • @romanmed9035
    @romanmed9035 2 роки тому

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

    • @mishanep
      @mishanep  2 роки тому

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

    • @romanmed9035
      @romanmed9035 2 роки тому

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

  • @armankhoyetsyan4705
    @armankhoyetsyan4705 2 роки тому

    👍👍👍👍

  • @nikitaermolenko7813
    @nikitaermolenko7813 Рік тому

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

    • @nikitaermolenko7813
      @nikitaermolenko7813 Рік тому

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

    • @mishanep
      @mishanep  Рік тому

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

    • @nikitaermolenko7813
      @nikitaermolenko7813 Рік тому

      @@mishanep жеееесть

  • @from_brest2631
    @from_brest2631 2 роки тому

    Лайк

  • @AmericanDragon134
    @AmericanDragon134 2 роки тому

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

    • @mishanep
      @mishanep  2 роки тому

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

  • @romanstoleru7936
    @romanstoleru7936 2 роки тому

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

  • @Surov000
    @Surov000 Рік тому +1

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

    • @mishanep
      @mishanep  Рік тому

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

    • @Surov000
      @Surov000 Рік тому

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

    • @mishanep
      @mishanep  Рік тому

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

  • @TigerUnderMoon
    @TigerUnderMoon 2 роки тому

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

  • @unhandled_error
    @unhandled_error 2 роки тому

    Спасибо!

  • @РоманБогдан-з6ц
    @РоманБогдан-з6ц 2 роки тому

    👍👍👍

  • @Елена-б6в3ж
    @Елена-б6в3ж 4 місяці тому

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

  • @Iepka_Roblox
    @Iepka_Roblox Рік тому

    Спасибо!