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

  Рет қаралды 18,710

Михаил Непомнящий

Михаил Непомнящий

Күн бұрын

Пікірлер: 90
@ArseniyBendyukov
@ArseniyBendyukov 2 жыл бұрын
Отличное видео, полезное. Я, признаться честно, даже не догадывался о том, что возможность работы с svg доступна из коробки - даже мысли загуглить не было. Я поступал так: создавал HOC, который добавляет возможность задавать для svg проп size и проп style. Также задавал отдельные пропы для цвета, толщины обводки, если такое было нужно. Обязательно исправлю теперь этот костыль в своем учебном проекте!
@sweatdreams2200
@sweatdreams2200 Жыл бұрын
Первый раз попал на Ваш канал, через это видео. А тут же кладезь всего) спасибо вам за работу!
@azamumarov182
@azamumarov182 Жыл бұрын
Ваш канал очень полезен для меня и всех начинающих на React, спасибо большое за полезную информацию и отличную подачу контента!
@evgeny9945
@evgeny9945 11 ай бұрын
на таких людях держится мир, спасибо
@ТимурМоисеев-н8ь
@ТимурМоисеев-н8ь 2 жыл бұрын
Почему я не нашел это видео час назад? Мужик, ты просто лучший.
@АрчибальтГугенов
@АрчибальтГугенов Жыл бұрын
ролик выручил меня! спасибо!
@Елена-б6в3ж
@Елена-б6в3ж 2 ай бұрын
Спасибо! Очень полезно
@VasiliyAlexsandrovich
@VasiliyAlexsandrovich 5 ай бұрын
спасибо большое. очень полезная вещь
@koshgosh3081
@koshgosh3081 Жыл бұрын
как всегда, все легко понимается), спасиб
@kyryloovsiannik7207
@kyryloovsiannik7207 2 жыл бұрын
Спасибо и не останавливайся. Очень интересный и полезный контент.
@Дима-п7х6л
@Дима-п7х6л 2 жыл бұрын
Огромное спасибо!!! Это очень полезно!!! много ломал голову над этим вопросом! +в карму)))
@ЕленаДавыдик-м4я
@ЕленаДавыдик-м4я Жыл бұрын
Безумно полезное видео, спасибо большое!)
@ТриоЛяро
@ТриоЛяро 2 жыл бұрын
Лучшее решение! До этого я столкнулся с такой проблемой и все что нагуглил это css filter для ховера, либо скопипастить svg иконки изменив цвет
@mishanep
@mishanep 2 жыл бұрын
Я встречал оба варианта в продакшн коде)))
@Nuts_Cracker
@Nuts_Cracker 2 жыл бұрын
Спасибо большое за полезный контент!
@CmapnepTV
@CmapnepTV 2 жыл бұрын
Спасибо, помогло очень при разработке моего приложения!
@user-artem-busyhin
@user-artem-busyhin 2 жыл бұрын
Супер. Огромное спасибо!
@prandrey2153
@prandrey2153 2 жыл бұрын
Ты супер! Обожаю! Я наверное уже час ищу как сделать правильно)))
@ahmadumarov2845
@ahmadumarov2845 Жыл бұрын
спасибо за хорошее видео) узнал что то интересное
@newageteam
@newageteam Жыл бұрын
спасибо, очень выручили
@NovikovEugene84
@NovikovEugene84 9 ай бұрын
Спасибо огромное. Очень в тему. Идеальное решение. Единственно, раз уж дело касается Реакта, то можно было ещё пример с map-функцией.
@true227
@true227 8 ай бұрын
что за мап функция? Просто метод массива map?
@yeppiee939
@yeppiee939 2 жыл бұрын
Отличное видео, спасибо, как раз на учебном проекте пригодится! :)
@СергейКузнецов-э4я2я
@СергейКузнецов-э4я2я 2 жыл бұрын
Отличный видос! Спасибо большое. Я правильно понял, что это альтернатива react-icons/font-awsome?
@happy_cutman
@happy_cutman 2 жыл бұрын
Шикарно))
@detlolkarus2461
@detlolkarus2461 2 жыл бұрын
Спасибо большое!
@ЕвгенийШут-о7н
@ЕвгенийШут-о7н 2 жыл бұрын
круто круто круто, колокольчик помог не пропустить))
@АлексейСтепанов-к9о
@АлексейСтепанов-к9о 2 жыл бұрын
Михаил. Спасибо огромное. Очень полезное видео. А то я раньше мучился с создание svg иконок другого цвета и заменой их в DOM по условию на hover…
@Iepka_Roblox
@Iepka_Roblox 10 ай бұрын
Спасибо!
@tirthadeva_yoga
@tirthadeva_yoga 6 ай бұрын
Миша, спасибо большое 🙏🏻 очень полезно. Как раз недавно была такая необходимость покрасить svg в другой цвет. Пытался через css это сделать, но ничего не вышло.
@rostikalekseev
@rostikalekseev 2 жыл бұрын
Лучший
@alexandervinnik2726
@alexandervinnik2726 2 жыл бұрын
Подход очень крутой. Но возникает вопрос: а что делать если иконка передается динамически, у одной может быть fill, а у другой stroke, и указание цвета для fill приводит к заполнению вовсе не там где хочется?
@leram3198
@leram3198 11 ай бұрын
Спасибо за видео, а есть ли подобный способ, если иконка svg добавляется не через JSX, а бэкграундом для ::before у соответствующего элемента? На hover элемента мне нужно менять цвет иконки, сейчас в проекте это реализовано так, что просто подгружается другая иконка с другим цветом, работает это долго и в первый раз в момент наведения она как бы "мигает", так как другая иконка не успевает подгрузиться. Хотелось бы какое-то нормальное решение по смене цвета через css :(
@true227
@true227 8 ай бұрын
если у вас сборщик Vite, то для свг устанавливаете плагин vite-plugin-svgr , описание по подключению на его странице. В конце строке пути импорта файла свг не забудьте указать ?react , импортируете без ReactComponent, а просто пишете нужное имя элемента. И еще у меня почему-то пропал импорт самого реакта в App.js, его в этом случае добавьте и все заработает
@elenam4363
@elenam4363 4 ай бұрын
Спасибо!
@kirillkhvorikov9470
@kirillkhvorikov9470 2 жыл бұрын
Вот бы проэктик какой ни будь посмотреть. React + Redux + NodeJS)))
@stern2936
@stern2936 2 жыл бұрын
Вовремя, прям как мана небесная)
@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 8 ай бұрын
@@joyful_hunter vite-plugin-svgr
@pw8749
@pw8749 2 жыл бұрын
Спасибо видео помогло. Мне как раз надо покрасить иконки для соц сетей. Долго ломал голову, почему не работает свойство fill.
@dimama1551
@dimama1551 2 жыл бұрын
красава
@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; }
@MrHackzack
@MrHackzack 8 ай бұрын
ничего не понятно, но очень интересно. Как повторить это все в домашних условиях?
@mishanep
@mishanep 8 ай бұрын
Зависит от настроек сборки проекта. В видео используется утилита create-react-app где данный функционал идёт из коробки. Как настроить для vite или rsbuild - у меня есть шортс на канале об этом
@РоманБогдан-з6ц
@РоманБогдан-з6ц 2 жыл бұрын
👍👍👍
@izzy7541
@izzy7541 2 жыл бұрын
Разве это реакт все делает? По моему это работает только в create-react-app, так-как там в конфиге вебпака есть плагин svgr, который и позволяет импортировать так иконки. Или я ошибаюсь?
@mishanep
@mishanep 2 жыл бұрын
Скорее всего вы правы.
@magerrrr
@magerrrr 2 жыл бұрын
Спасибо большое! полезное видео, стало понятно, что же такое current этот) Подскажи пожалуйста - в create react app с свг все ок по дефолту, а когда ты сам конфиг пишешь для вебпака с нуля, что необходимо сделать, чтобы поведение было таким же для свг иконок?) указать путь к папке с ними (например src/assets) и указать лоудер типо @svgr/webpack для расширения svg? Мне кажется я понимаю, но хочу для себя прояснить по пунктам - например при настройке конфига в вебпаке для работы с свг мы должны - 1 пункт, 2 пункт и 3 пункт.... Буду как всегда очень благодарен, если пояснишь) Спасибо!
@mishanep
@mishanep 2 жыл бұрын
Скорее всего да, вручную нужно добавлять тогда преобразования. Как именно не подскажу, не реализовывал.
@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 надо читать доку как добиться того же самого. С ходу не отвечу.
@sasdasaasdasdasdadad5354
@sasdasaasdasdasdadad5354 2 жыл бұрын
как вы считаете ,что лучше использовать styledcomponents или css modules / для новичка ?
@mishanep
@mishanep 2 жыл бұрын
Для новичка однозначно модулей будет достаточно
@aleksprimetv
@aleksprimetv 2 жыл бұрын
Их можно еще оборачивать в функции и экспортировать, а импортировать как обычный компонент.
@mishanep
@mishanep 2 жыл бұрын
Безусловно. Так обычно и выглядят современные библиотеки с готовыми svg иконками.
@ursidae9
@ursidae9 Жыл бұрын
Большое спасибо за видео! Очень полезно! Если правильно пониманию, то этот способ позволяет закрасить свг только одним цветом. А если внутри несколько филов, как им передавать нужные значения?
@mishanep
@mishanep Жыл бұрын
Через css можно попробовать псевдоселектор :nth-child
@from_brest2631
@from_brest2631 2 жыл бұрын
Лайк
@RD-or5go
@RD-or5go Жыл бұрын
А как тоже свмое сделать в Typescript?)
@paulsekishov4143
@paulsekishov4143 2 жыл бұрын
Привет Михаил! Можешь сделать видео работой с svg-sprites в REACT
@mishanep
@mishanep 2 жыл бұрын
Приветствую! Никогда не работал с svg-sprites =) Если доведется, то и про видео можно будет подумать.
@paulsekishov4143
@paulsekishov4143 2 жыл бұрын
Я скачал макет для теста и в нём Header имел 100vh и тут я столкнулся с тем сто css не работает так как App является вложенным в структуре DOM есть ли какие-то решения чтоб меньше дебажить верстку? Обычно этот ефект привязан к Body. Считаю что это связано с тем что здесь сталкиваются два DOMa один статичный другой виртуальный (APP React Component)
@mishanep
@mishanep 2 жыл бұрын
Здравствуйте. В реакт приложении нет никаких ограничений на использование vh. Тот же хэдер спокойно можно растянуть на экран и наличие корневого элемента (промежуточного относительно body) здесь не является помехой.
@romanmed9035
@romanmed9035 2 жыл бұрын
неожиданное решение. а есть ли видео для начинающих в реакт? чтобы совсем кто даже и терминала в руках не держал?
@mishanep
@mishanep 2 жыл бұрын
@Roman Med есть целый курс по Реакт для начинающих. Ссылки на курсы есть в описании под каждым видео.
@romanmed9035
@romanmed9035 2 жыл бұрын
@@mishanep спасибо. ибо в чатах надо начинающих куда-то направлять где будет полезно. ибо уже нет терпения простейшее описывать.
@romanstoleru7936
@romanstoleru7936 2 жыл бұрын
тот случай когда ты новоичек и просто посмотрел 5 мин видео и не чего не понял xD
@AmericanDragon134
@AmericanDragon134 2 жыл бұрын
Полезное видео. ' * ' что это означает
@mishanep
@mishanep 2 жыл бұрын
Универсальный селектор. Что угодно.
@nikitaermolenko7813
@nikitaermolenko7813 Жыл бұрын
А как без react красить свг?:)
@nikitaermolenko7813
@nikitaermolenko7813 Жыл бұрын
Неужели кодом вставлять
@mishanep
@mishanep Жыл бұрын
В Реакте после сборки оно кодом и вставляется. Есть разные способы добавления svg на страницу, но не все позволяют стилизовать элемент. Если просто верстаете, то да, кодом вставлять =)
@nikitaermolenko7813
@nikitaermolenko7813 Жыл бұрын
@@mishanep жеееесть
@Surov000
@Surov000 Жыл бұрын
а слабо видос не про 2+2 записать, а анимировать хотябы трехцветную svg с эффектами на разных элементах? Капитанская инфа есть везде, в чем смысл ее заливать
@mishanep
@mishanep Жыл бұрын
Если вы почитаете соседние комментарии, то смысл делать подобные видео станет очевидным.
@Surov000
@Surov000 Жыл бұрын
@@mishanep без негатива, хочется поднять скил в обращении с свг, но хардовых гайдов не могу найти.
@mishanep
@mishanep Жыл бұрын
@@Surov000 попробуйте FrontendMasters frontendmasters.com/courses/?q=svg
@SergAlexson
@SergAlexson 2 жыл бұрын
Спасибо! Очень полезно
@unhandled_error
@unhandled_error 2 жыл бұрын
Спасибо!
@armankhoyetsyan4705
@armankhoyetsyan4705 2 жыл бұрын
👍👍👍👍
@TigerUnderMoon
@TigerUnderMoon 2 жыл бұрын
спасибо! очень полезно
@onlynowmotivation
@onlynowmotivation 2 жыл бұрын
Спасибо!!!
MatchMedia для определения типа устройства
18:58
Михаил Непомнящий
Рет қаралды 13 М.
Новые хуки useTransition и useDeferredValue в React 18
22:17
Михаил Непомнящий
Рет қаралды 22 М.
А что бы ты сделал? @LimbLossBoss
00:17
История одного вокалиста
Рет қаралды 9 МЛН
MY HEIGHT vs MrBEAST CREW 🙈📏
00:22
Celine Dept
Рет қаралды 51 МЛН
Это было очень близко...
00:10
Аришнев
Рет қаралды 4,3 МЛН
Flipping Robot vs Heavier And Heavier Objects
00:34
Mark Rober
Рет қаралды 59 МЛН
How to create and use an SVG Sprite
18:29
Self Teach Me
Рет қаралды 18 М.
Разделение логики и представления в React-приложении
27:55
Жадные алгоритмы
11:10
про АйТи | IT Pro
Рет қаралды 10 М.
Как добавить SVG иконки в React | React SVG icons
6:45
Типичный Веб Разработчик
Рет қаралды 3,7 М.
Жизненный цикл React компонентов | Все что нужно знать за 12 минут
12:17
Frontend Fundamentals | Александр Караджиков
Рет қаралды 4,5 М.
CSS-модули, SASS/SCSS и сброс стилей в React-приложении
18:28
Михаил Непомнящий
Рет қаралды 37 М.
Клиент Apollo GraphQL для React-приложений
44:11
Михаил Непомнящий
Рет қаралды 29 М.
А что бы ты сделал? @LimbLossBoss
00:17
История одного вокалиста
Рет қаралды 9 МЛН