SPA-проект с темизацией на React и styled-components

  Рет қаралды 33,523

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

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

Күн бұрын

Пікірлер: 165
@mishanep
@mishanep 3 жыл бұрын
Сыграю на опережении: тема в VS Code - CodeSandbox
@cooq_
@cooq_ 3 жыл бұрын
или Atom one dark, если хочется похожую
@michaelhamar3305
@michaelhamar3305 2 жыл бұрын
Это задача примерно для какого уровня программиста junior/middle/ и тд?
@mishanep
@mishanep 2 жыл бұрын
@@michaelhamar3305 эти градации весьма условны и в каждой компании будут подразумевать разные требования. По хорошему junior, желающий разрабатывать SPA приложения на React должен уметь подобное написать. С другой стороны, не каждый джуниор пишет на Реакте.
@michaelhamar3305
@michaelhamar3305 2 жыл бұрын
@@mishanep ок,спрашиваю так как видел что знакомий middle такое писал
@andTutin
@andTutin 2 жыл бұрын
@@michaelhamar3305 беспонтовый проект, очень лёгкий , на новичка. практически 80% стилизация
@vadim_romanov
@vadim_romanov 4 ай бұрын
спасибо, хороший проект, лучше познакомился со styled components, а в ваших курсах по redux и typescript мы в него добавляем еще и redux и typescript))
@НиколайХорошуля-д7о
@НиколайХорошуля-д7о 3 жыл бұрын
Михаил, большая благодарность Вам за проделанную работу, у вас талант преподавателя. Было бы круто если бы ещё курс по redux вышел!)
@V4VFAloj7juAyQW
@V4VFAloj7juAyQW 3 жыл бұрын
Да, очень прошу курс по redux . Никак не могу с этим разобраться.
@sno-oze
@sno-oze 3 жыл бұрын
Отличное видео, шикарное объяснение! Задания с frontendmentor - вот это прямо годно.
@PerryCoxer
@PerryCoxer 2 жыл бұрын
Супер. Очень подробно, но не растянуто все объяснили. То что нужно для pet проекта!
@eev9enn578
@eev9enn578 3 жыл бұрын
Безумно благодарен что учишь людей бесплатно на KZbin. Такое дорогого стоит. Желаю процветания, и спасибо тебе что ты помогаешь новичкам в данной сфере. Спасибо!
@ilaymorozoff4113
@ilaymorozoff4113 3 жыл бұрын
Благодарим Михаил, топовый контент подъехал))
@СергейРыженьков
@СергейРыженьков 3 жыл бұрын
поставил бы 10 лайков если можно было, за тёмную тему наконец то, не выжигает глаза, так как смотрю ролики ночью
@FamilyGames166
@FamilyGames166 Жыл бұрын
Михаил, большое спасибо, писал около недели двухчасовой ролик, изучил кучу всего, спасибо!!!
@cooq_
@cooq_ 3 жыл бұрын
Ребята пишите комменты, помогайте автору в продвижении. На русскоязычном ютубе мало достойных ребят, хорошо объясняющих реакт. Спасибо за видео)
@Natalia-ph
@Natalia-ph 2 жыл бұрын
Супер видео, спасибо огромное! Пока только посмотрела, все доступно и понятно, теперь нужно браться за реализацию
@karenm.944
@karenm.944 2 жыл бұрын
Большое спасибо за качественный контент! P.S. В конце видео не отображался флаг Андорры из-за того, что код этой страны - ad (он находиться в url на флаг страны). Если у пользователя установлен ADBlocker, то он просто заблокирует ответ сервера из-за того, что посчитает это рекламой)) Ситуация становиться ещё более интересной, если знать, что блокируется только SVG картинка, то есть, если запрашивать PNG, то все будет ок)) Удачи!
@Nikita-fl2td
@Nikita-fl2td 2 жыл бұрын
Михаил, большое вам спасибо! Вы умеете сложные вещи объяснять простым языком. Благодаря вам не забросил изучение в дальний ящик, а продолжаю двигаться вперед. Давно хотел вас поблагодарить!
@thegulpofenglish4131
@thegulpofenglish4131 2 жыл бұрын
Михаил, сердечная благодарность за ваши труды. Хотелось бы видеть больше продвинутых уроков. Роста каналу, Вам - всех благ.
@пиупиу-р6д
@пиупиу-р6д 2 жыл бұрын
понравилась подача материала, ролик до конца не досмотрела, но подписалась и купила ваш курс) удачи мне))
@ИванВалучев-э5р
@ИванВалучев-э5р Жыл бұрын
Михаил, спасибо, все понятно и доходчиво! лайк, подписка))
@DmitriiBeliaev-v5q
@DmitriiBeliaev-v5q Жыл бұрын
Отличное видео, спасибо!
@ДмитрийОлейник-л9о
@ДмитрийОлейник-л9о 2 жыл бұрын
Видео полезное! Узнал много новой информации. При роутинге помогла серия соответствующих роликов. Круто обучаться на реальных проектах! Спасибо)
@artemmolot2474
@artemmolot2474 3 жыл бұрын
Спасибо большое, Михаил. Столько полезных приемов.
@andreymedkov795
@andreymedkov795 2 жыл бұрын
Отлично объясняешь. Приятно слушать!)
@Алексей-и5д3в
@Алексей-и5д3в 2 жыл бұрын
Огромное Вам спасибо за Ваш труд
@ЛюбовьЛенская-и3ц
@ЛюбовьЛенская-и3ц 2 жыл бұрын
Спасибо за такой интересный и понятный урок!
@ВладиславМартинов-я2щ
@ВладиславМартинов-я2щ 3 жыл бұрын
Спасибо всё очень круто, с такими темпами можно стать профи в реакте если смотреть ваши выпуски!
@ВладиславМартинов-я2щ
@ВладиславМартинов-я2щ 3 жыл бұрын
Будет круто если запишите ролик по созданию spa приложения используя React + Redux(toolkit)
@dmaberlin
@dmaberlin Жыл бұрын
Спасибо Миша! уроки и курсы супер!
@dr_morpho
@dr_morpho 2 жыл бұрын
Супер! Большое вам спасибо🤝)
@ekuzovlev
@ekuzovlev 3 жыл бұрын
Михаил, в очередной раз большое спасибо за отличные уроки, просмотр которых вдохновляет учиться дальше. И хочу выразить отдельную благодарность, что выбираете симпатичные дизайны, и даже в простых уроках уделяете время и внимание оформлению элементов и опрятности. Видеть красивую картинку перед глазами тоже важно, во всяком случае для меня. )
@konglomora3230
@konglomora3230 3 жыл бұрын
Спасибо за Ваш труд!!!
@alexnixx
@alexnixx 2 жыл бұрын
Отличное видео) Пару недель назад сам делал это задание на фронтендменторе, после просмотра видео понимаю что местами заговнокодил) Наверное, даже хорошо, что после решения самому я наткнулся на это) Теперь даже немного стыдно и хочется все переписать) Спасибо за контент
@ЕвгенийШут-о7н
@ЕвгенийШут-о7н 2 жыл бұрын
спасибо большое за видео, спасибо большое за темную тему))
@АнатолийГорбов-о1ь
@АнатолийГорбов-о1ь Жыл бұрын
Отличное видео! много полезных фишек! было бы круто дополнить это видео роликом как это все затипизировать потом на TS))
@mishanep
@mishanep Жыл бұрын
На моем курсе по TS (степик или юдеми) есть такой ролик :))
@thekamol
@thekamol 2 жыл бұрын
Спасибо большое вам, было очень полезьно!
@ДмитрийТитов-ц4щ
@ДмитрийТитов-ц4щ 3 жыл бұрын
Спасибо, Михаил!
@serjdenisov2114
@serjdenisov2114 3 жыл бұрын
Большое спасибо за урок!
@Denisqa-ke1xo
@Denisqa-ke1xo Жыл бұрын
Да, круто) теперь возвращаюсь к уроку курса по TypeScript)
@vzvanov
@vzvanov 2 жыл бұрын
Круто и полезно!!!
@Brunopt893
@Brunopt893 Жыл бұрын
Gracias por el vídeo y saludos desde Portugal :)
@mishanep
@mishanep Жыл бұрын
De nada. Y saludos desde Malaga :)
@AlexGabber
@AlexGabber Жыл бұрын
Спасибо большое, но кажется тут вопрос styled-components не раскрыт, к сожалению. Основной сок этого пакета в динамических стилях через пропсы. В любом случае лайк :) Обожаю Михаила Непомнящего. А я пойду дальше изучать как лучше всего применять styled-components в своей личной библиотечке, может наткнусь где-то на крутую практику
@Alexander-tp6gy
@Alexander-tp6gy 3 жыл бұрын
очень круто, большое спасибо, вот бы следующим видео добавить еще пагинацию, на канале и в платном курсе такого нет
@mishanep
@mishanep 3 жыл бұрын
В пагинации на самом деле нет ничего сложного. Здесь единственно надо решить кто за неё отвечает с точки зрения данных - фронтенд или бэкенд. Чаще бэкенд, а это значит, что rest api должен предоставлять соответствующий инструмент. С точки зрения spa роутинга это всего лишь дополнительный параметр.
@CJIu3eHb
@CJIu3eHb 2 жыл бұрын
1. Про теминг из styled-components вопрос уже был, но несмотря на претензии к производительности, я бы попробовал родной. Хотя вариант с css-переменными и установкой класса на body тоже интересен. 2. Закрашивание контейнера в селекте на темной теме (49:10) через css с выборкой по наличию аттрибута id выглядит костыльно. В react-select есть способы кастомизировать стили, судя по докам это наверняка возможно. Иначе будет минорное обновление какое-нибудь, верстку в котором внутри компонента изменят - и адьес. 3. "всегда были трудности с weight и height" А как же length? :) 4. Вызов фильтрации через useEffect (1:55:00) - тоже костыль. Все таки мьютить линтер надо только в крайних случаях., он часто намекает на странности в коде. Если все равно грузим страны только один раз за время жизни приложения - то лучше в App.js и грузить, а потом прокидывать в HomePage только countries.
@AlejandroMatos
@AlejandroMatos 3 жыл бұрын
Я рада, что мой проект помогает вам создать это руководство :)
@mishanep
@mishanep 3 жыл бұрын
Вот здесь поподробнее пожалуйста))
@АлексейМастяница-ы4е
@АлексейМастяница-ы4е 3 жыл бұрын
Ну лучший,что тут ещё сказать )
@Дмитрийсекрет-н7о
@Дмитрийсекрет-н7о 3 жыл бұрын
Огромное спасибо ))
@starlord311
@starlord311 3 жыл бұрын
Жду от Вас проект с Redux
@АнтонМирный-с5х
@АнтонМирный-с5х 3 жыл бұрын
Спасибо
@from_brest2631
@from_brest2631 3 жыл бұрын
Моща 👍
@osad4enko
@osad4enko Жыл бұрын
Было бы прекрасно увидеть в Вашем исполнении: связка React с Express и Mongo - - пару примеров и правильным API на стороне сервера, без REST API на стороне фронтэнда...
@cooq_
@cooq_ 3 жыл бұрын
По поводу подсветки синтаксиса в компонентах styled-components для vscode расширение "vscode-styled-components", для webstorm "Styled components & Styled jsx"
@mishanep
@mishanep 3 жыл бұрын
Попробую, спасибо.
@mishanep
@mishanep 3 жыл бұрын
Поставил рекомендованное расширение. Так намного удобнее, спасибо =)
@cooq_
@cooq_ 3 жыл бұрын
@@mishanep Спасибо за контент :)
@leshiq4214
@leshiq4214 3 жыл бұрын
пфф, я делаю такое на завтрак! ))) Довольно типовая задача, на самом деле. Для новичков норм, полезно/интересно.
@mishanep
@mishanep 3 жыл бұрын
Что происходит в основной приём пищи?
@280282roger
@280282roger 2 жыл бұрын
@@mishanep ОЗУ заканчивается =))))))))))))))
@etemax
@etemax 2 жыл бұрын
спасибо за контент! если сравнивать с реальными задачами на работе, то уровень 4 advanced там примерно такой же будет?)
@mishanep
@mishanep 2 жыл бұрын
Реальные задачи обычно более декомпозированы. То есть не бывает задачи типа "создай всё приложение целиком". Обыкновенно есть бизнес-требования, заказчик хочет какую-то фичу реализовать. Дизайнеры рисуют - лиды декомпозируют на подзадачи и далее от простого к сложному. Где-то UI компонентик сверстать, где-то над логикой поработать. Ну плюс часто еще и тесты написать ко всему этому. Касаемо уровней сложности, здесь сильно от компании или проекта зависит. Бывает так что миддл при смене работы ранжируется джуном, бывает и наоброт.
@etemax
@etemax 2 жыл бұрын
@@mishanep понял, спасибо за развернутый ответ!
@J_artem
@J_artem 2 жыл бұрын
🙏👏
@mr.zxzxzxz3816
@mr.zxzxzxz3816 2 жыл бұрын
спасибо за труд 👍👍👍
@ds7629
@ds7629 2 жыл бұрын
"Линтер не должен нам портить жизнь... ", наш девиз по жизни
@alisher_akot
@alisher_akot 2 жыл бұрын
Отличное видео) сделай пожалуйста pwa приложение погода
@mishanep
@mishanep 2 жыл бұрын
Почему именно погода? :)
@alisher_akot
@alisher_akot 2 жыл бұрын
@@mishanep мне, как новичку интересно было бы посмотреть, как изменяется фон при изменении погоды и другие функционалы приложении
@aaaaaaaaaaaaaaaaa8296
@aaaaaaaaaaaaaaaaa8296 Жыл бұрын
а чем заменить useHistory когда у меня версия react-router-dom v6? посмотрел несколько видосов и в stackoverflow тоже, нашел только что заменяется этот хук useNavigate, но вот в Details компоненте пропсов нету. помогите если кто знает как пропсы получить
@AlexStr-h9t
@AlexStr-h9t Жыл бұрын
используй useParams() в Details
@krasovsky1
@krasovsky1 2 жыл бұрын
Отличное видео. Действительно ли так критично использование не родной темизации от SC?
@mishanep
@mishanep 2 жыл бұрын
В сети можно найти обзоры на эту тему с конкретными цифрами по производительности. На небольшом приложении будет не так критично, как на большом.
@DmitriyDev
@DmitriyDev 2 жыл бұрын
Спасибо за крутой урок) Скажите а в реальных проектах для каждого компонента нужно создавать папку? Или можно как вы делать?
@mishanep
@mishanep 2 жыл бұрын
Зависит от проекта. Но чаще всего да - папка. В папке, помимо компонета, тесты к нему, стили, истории для StoryBook, хэлперы и кастомные хуки когда требуется, иногда моки.
@andriitkach6775
@andriitkach6775 2 жыл бұрын
Мега крутой контент! Спасибочки!! Мы все были бы очень благодарны за такой проектик в комбинации с TS. Запишите в TodoList пожалуйста.
@gingashie
@gingashie 2 жыл бұрын
Можно я поправлю, у многих на утюбе слышу как Theme читают как Зим, но на самом деле читается Фим. у буквосочетания TH два звука: звонкий (грубо говорят З) и глухой (Ф), вот в слове Theme именно глухой звук, который слышится как Ф или Т когда язык между зубами. Но это конечно не так важно, поэтому спасибо большое за такие подробные уроки, лично мне они уже очень много дали и помогли в работе.
@mishanep
@mishanep 2 жыл бұрын
Мой опыт заигрывания с теми или иными английскими словами в плане произношения довольно забавный. Любое произношение всегда находит недовольных =) Я помню, камнем преткновения долгое время был character, когда я преподавал детям создание игр на Unity. В каждой группе находился ребенок, пытавшийся поправить меня, даже когда я стал произносить корректно =) Поэтому с вашего позволения просто продолжу произносить как мне привычно, и как моё ухо регулярно слышит на англоязычных ресурсах. Впрочем, соглашусь, что иной раз произношение, далекое от нативного, может подпортить всю картину. В любом случае, рад что мои видео оказались для вас полезными =)
@druf5962
@druf5962 Жыл бұрын
Спс за видео. В данном ролике смена темы происходит через styled-components, если хочу использовать обычный css, какой лучше подход использовать? Делать общие css data атрибуты, передавать через пропсы, контекст или еще какой вариант? На сколько styled-components актуален в больших проектах?
@mishanep
@mishanep Жыл бұрын
Я встречал комбинированные подходы использования styled-components и css-переменных. Что-то подобное, в частности, используют современные ui фреймворки, вроде той же chakra ui. Самый простой вариант css темизации - вешать текущую тему на body и менять значения css-переменных. На больших проектах styled-components имеет место быть, особенно удобно с точки зрения ленивой подгрузки стилей вместе со страницами/компонентами.
@MaksTrueman
@MaksTrueman Жыл бұрын
@@mishanep "Самый простой вариант css темизации - вешать текущую тему на body и менять значения css-переменных." Получается, в таком подходе можно и без styled-components обойтись? Хочу на scss сделать. Там переменные также будут работать?)))) импорты только надо будет сделать, как понимаю.
@АрчибальтГугенов
@АрчибальтГугенов Жыл бұрын
Добрый день. Понимаю, что нет строгих правил, но можно ли создавать для каждого реакт компонента отдельный файл со стилизованными компонентами. А если есть переиспользуемые стилизованные компоненты, то закинуть их в общий файл для всего приложения. Получается, у каждого реакт компонента в папочке свой файл со стилями. И один общий для всего приложения. Или же есть более удобный способ? Как вы обычно делаете?
@koshgosh3081
@koshgosh3081 Жыл бұрын
Как вы считаете, что использовать с реактом для стилизации? Я здесь посмотрел изучил tailwind, Михаил, был бы рад увидеть ваш ответ)
@mishanep
@mishanep Жыл бұрын
Я чаще использую scss модули, либо готовую ui библиотеку, вроде chakra-ui.
@koshgosh3081
@koshgosh3081 Жыл бұрын
@@mishanep Спасибо! Попробуем)
@e_viskhan
@e_viskhan Жыл бұрын
18:05 - насчет того, что styled-components и обычные css переменные плохо сочетаются, - у меня в webstorm подсказки как для css, так и для переменных из файла css, подсказывает прямо все.
@dyaroman1241
@dyaroman1241 2 жыл бұрын
Спасибо за видео. Один момент не дает покоя, почему переменная для скругления называется ‘radii’, а не ‘radius’ например? Или это была опечатка которая стала частью кода?
@mishanep
@mishanep 2 жыл бұрын
Приветствую. Нет, это не опечатка) это скорее привычка, выросшая из работы с конкретными инструментами, в том числе самописными. Если начать ковырять принципы работы с темизацией такой библиотеки как Chakra UI, или изучить подход styled-systems, то там вы тоже встретите radii. Скажем так, это общая практика.
@alexnixx
@alexnixx 2 жыл бұрын
Подскажите, занимаюсь разработкай магазина. Делаю страницу с фильтрацией. По бренду, по категории, цене и тд тп. По вашему мнению, как "правильно" поступать в данной ситуации: 1. При изменении какого либо параметра (та же категория) мне заново делать запрос api на получения фильтрованного списка товаров. 2. По всему списку товаров, которые я уже получил, перебирать как вы в данном примере через filter & includes. Очень интересно ваше мнение, потому что на данном этапе мои понимания "что лучше", "что быстрее", "что ПРАВИЛЬНО". недостаточны. По этому и мечусь. Конечно, когда товаров, условно, 10 шт. - разницы никакой нет. Но если допустим, их будет 200 - что будет быстрее, здесь уже не понятно)
@mishanep
@mishanep 2 жыл бұрын
Здесь надо отталкиваться от API, с которым вы работаете. Если, допустим, у вас сотни позиций, а получаете вы их постранично, то надо делать новый запрос на каждый выбранный фильтр (посмотрите, как яндекс.маркет, например, работает). Если вы сразу получили все товары, то смысла запрашивать их повторно нет. Фильтруйте их на фронте.
@alexnixx
@alexnixx 2 жыл бұрын
@@mishanep Спасибо большое!)
@AnonimUA
@AnonimUA 2 жыл бұрын
в react routet v6 немогу передать пропс match в компонент Details. Посоветуете решение?
@AnonimUA
@AnonimUA 2 жыл бұрын
разобрался - с помощью useParams()
@ЕвгенийШут-о7н
@ЕвгенийШут-о7н 2 жыл бұрын
У меня одного UseEffect при первом рендере не срабатывает из-за чего countries не получает data и ломается приложение (1:22:15 на видео)? Может где-то реакт обновился кроме react-router-dom?
@ShoTHIk
@ShoTHIk 2 жыл бұрын
Там countries поменялся на filteredCountries. Последний массив появляется(наполняется странами) только тогда, когда срабатывает функция onSearch={handleSearch}, которая передана из компонента ХоумПейдж в компонент Контрол. А срабатывает она, соответственно , при фильтрации стран (которые уже есть в массиве countries но ещё не передались в отфильтрованный массив filteredCountries). Может кто знает как это пофиксить?
@denmccormik7654
@denmccormik7654 2 жыл бұрын
@@ShoTHIk добавить еще один useEffect, как на последних минутах видео
@dietmarvogt7455
@dietmarvogt7455 2 жыл бұрын
Вопрос по переключению темы, а именно использование document. Если я правильно понимаю, при использовании document мы попадаем внутрь виртуального DOM, который контролирует React и без его ведома вносим новые элементы, что может со временем негативно отразиться в работе приложения. Если это так, то как тогда лучше решить подобную задачу?
@mishanep
@mishanep 2 жыл бұрын
Приветствую. document - это браузерный DOM, React для работы использует свой виртуальный, на базе которого потом обновляет браузерный. Но React-приложение обычно живет в контексте какого-то DOM-узла, например div#app, и ничего не знает про остальную структуру документа. В примере из видео мы обращаемся через document к body, с которым React никак не взаимодействует. Поэтому здесь всё ок. Антипаттерном было бы обращаться через document к каким-либо узлам, находящимся под управлением Реакта.
@Dioni-h5q
@Dioni-h5q 2 жыл бұрын
Я уверен, данное видео даст мне много знаний, но хочется прям кричать в голос для всех авторов... Хотелось бы видеть действительно правильный проект, а не " я сделаю все тут, для простоты и скорости ". Конечно, огромное спасибо и за этот материал)
@mishanep
@mishanep 2 жыл бұрын
Правильный проект - это иной хронометраж. Я видел западные авторы делали что-то такое в формате платных курсов с таймингом 12+ часов. И всё равно без тестов, без TypeScript. Да и спросом такой формат не слишком пользуется. Поэтому да, упрощаем, в попытке донести какое-то ограниченное количество идей.
@poiu7185
@poiu7185 3 жыл бұрын
Здравствуйте,я первый.Вы лучший!!!!
@АлексейИванов-ш4н1у
@АлексейИванов-ш4н1у Жыл бұрын
Для тех кто делает в 2023... если не работает команда NPM START 1- удалить package-lock.json и modules если вообще есть 2- переустановить dependencies ---- WINDOWS (rd /s /q "node_modules" del package-lock.json del -f yarn.lock npm cache clean --force npm install) ----- MAC (rm -rf node_modules rm -f package-lock.json rm -f yarn.lock npm cache clean --force npm install)
@michaelhamar3305
@michaelhamar3305 2 жыл бұрын
Это задача примерно для какого уровня программиста junior/middle/ и тд?
@kitsunaana9783
@kitsunaana9783 2 жыл бұрын
Стажер/Junior, зависит от компании, уровни, это всего лишь условная градация
@darkstyle7000
@darkstyle7000 2 жыл бұрын
Михаил, объясните пожалуйста почему на 59:35 - вы задаете для key={el.title} , а не индекс массива или же id
@mishanep
@mishanep 2 жыл бұрын
Приветствую! Для массива info делается перебор элементов через встроенный метод map. Для каждой итерации в переменную el попадает один элемент массива (т.е. объект со своими ключами). Поэтому индекс массива нам не нужен. Имея переменную el, мы напрямую обращаемся к свойствам объекта.
@osad4enko
@osad4enko Жыл бұрын
create-react-app use only для уроков? в повседневной работе webpack ?
@mishanep
@mishanep Жыл бұрын
Create-react-app под капотом использует тот же webpack. Есть специальный скрипт, чтобы извлечь настройки сборщика и работать с ними напрямую. Но подход будет зависеть от проекта. Мне попадались разные варианты - и полностью с нуля сборка на webpack, и create-react-app в том же виде, что в данном проекте, и в "разобранном" состоянии с доп настройками, и с дополнительными либами, через которые можно "подкрутить" настройки базового шаблона. Сейчас популярность набирает сборщик vite (у меня по нему недавно было видео), на котором можно еще быстрее стартовать пет-проект.
@alexeybudai8511
@alexeybudai8511 2 жыл бұрын
Если кто-то пишет на typescript и не работает normalize.css, то добавте import в index.tsx, перед импортом index.css.И кстати если использовать webstorm, то он подскзывает название переменных css в styleComponents P.s Будут ли пхожие видосы на typescript и redux? Спасибо за видос
@mishanep
@mishanep 2 жыл бұрын
Следующий проект в плейлисте с redux, насколько помню. Думаю со временем и ts появится. Пока я всё ещё не уверен в направлении практических видео, какими они должны быть.
@alexeybudai8511
@alexeybudai8511 2 жыл бұрын
@@mishanep Ну если учитывать что такие ролики будут смотреть новички делать их и складывать себе на гит хаб, то думаю в таких роликах лучше объяснять как рабоатют те или иные популярные технологии, котрые будут интересны работадателю и с которыми вы работали, а что уже писать это уже не так важно,как по мне хоть интернет-магазин,хоть какой-нибудь туду лист. И если есть возможность добавить какую-то градацию по сложности.И вот что заметил, что таких гайдов много и они как бы масштабнее,но их возраст в большинсве больше года что для библиотек довольно много, лучше пусть проекты будут маленькими,но актуальными.
@ekaterinam6363
@ekaterinam6363 Жыл бұрын
Подскажите, можно ли такие проекты добавлять к себе в портфолио или это считается плагиатом?
@mishanep
@mishanep Жыл бұрын
Смотря, что вы имеете в виду. Если сделаете самостоятельно, то можно. Если возьмёте готовый, то это уже не портфолио, а подборка готовых проектов.
@vladimirplyukhin5234
@vladimirplyukhin5234 2 жыл бұрын
Михаил, добрый день. Слушайте, сейчас useHistory не функционирует в новой версии, если я правильно понимаю. То есть нужно как-то работать через useParams в настройках роутинга, чтобы отображать инфо по клику на карточку страны?
@vladimirplyukhin5234
@vladimirplyukhin5234 2 жыл бұрын
Добавил хук useParams в компонент Details и вроде заработало. Спасибо заранее, вы очень достойный преподаватель! P. S. Посмотрел ваш мини курс про обновлённый react-router-dom
@dmaberlin
@dmaberlin Жыл бұрын
@@vladimirplyukhin5234 расскажи, как именно ты юзал useParams?
@vladimirplyukhin5234
@vladimirplyukhin5234 Жыл бұрын
@@dmaberlin Привет мен, я уже не помню и если честно, сейчас даже нет времени пробежаться глазами по репе и вспомнить, но я помню что все моменты я решил с помощью видео Михаила и документации. Удачи тебе!
@alexidino
@alexidino 2 жыл бұрын
Ребят, подскажите есть у кого проблема с restcountries, почти всегда недоступен, заметил со многими rest api такое. В Казахстане грузит, это блочат получается, очень плохо.
@DmitriyDev
@DmitriyDev 2 жыл бұрын
да в Казахстане многие сайты не доступны
@doitbetter7687
@doitbetter7687 2 жыл бұрын
Мхаил, спасибо, офигенный урок получился! У меня вопрос, если в объекте присутсвует другой объект у которого меняется назнаение как в данном проекте с currencies и languages произошло(изменилась структура API), как распаковать это все?) струкутура такая: currencies:{ EUR: {name: 'Euro', symbol: 'E'} } и вот это слово EUR периодически меняется на какое-либо другое =( Спасибо!
@doitbetter7687
@doitbetter7687 2 жыл бұрын
Разобралась, 😂 сделала через Object.entries(currencies) Object.values(languages) функции 😅
@mishanep
@mishanep 2 жыл бұрын
Здорово, что разобрались. Вообще в реальных проектах структура api не должна меняться. У неё могут быть разные версии, это да. Но на конкретную версию структура всегда одна. Это называется контрактом между фронтом и бэком. И обе стороны должны его соблюдать.
@Pavlenko_M_
@Pavlenko_M_ Жыл бұрын
Спасибо за совет, мне при выводе currencies помог Object.values(), Вы меня очень выручили! Михаил, Вам тоже большое спасибо за уроки, они часто тяжелые для меня, но очень эффективные :)
@Sobanim
@Sobanim Жыл бұрын
с тайпскриптом бы и было бы топ)
@mishanep
@mishanep Жыл бұрын
Есть и с тайпскриптом)) На курсе по тайпскприту))
@ГлебКодрик-ж5ж
@ГлебКодрик-ж5ж 3 жыл бұрын
Скажи пж какие плагины устанавливаешь для vs code я все подобрать норм не могу а у тебя по виду крутой
@mishanep
@mishanep 3 жыл бұрын
Их много, на самом деле. У меня есть видео про мои настройки vs code. Может что-то конкретное интересует?
@ГлебКодрик-ж5ж
@ГлебКодрик-ж5ж 3 жыл бұрын
@@mishanep да в принципе визуал не нравится , очень много плагинов ставил и как то не очень , а у тебя зашло, я конкретно про компоненты как div выглядит и т . Д
@mishanep
@mishanep 3 жыл бұрын
За визуал в первую очередь отвечает тема. У меня основная тема - CodeSandbox, тема для иконок Material Icons. Для оформления разноцветных скобок используется Color Pair Colorizer 2. Остальные все плагины за функциональность отвечают.
@velikorossnationalist4259
@velikorossnationalist4259 Жыл бұрын
У меня ошибка почему-то выходит. Полностью повторяю как Вы говорите в коде, даже скопировал часть кода из гитхаба и вставил у себя в редакторе. На 01-05-50 минуте. Там такая ошибка (их две) Encountered two children with the same key, `[object Object]`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted - the behavior is unsupported and could change in a future version. --------- и еще ------ Error: Objects are not valid as a React child (found: object with keys {common, official, nativeName}). If you meant to render a collection of children, use an array instead. Проблема похоже где-то здесь: {countries.map((c) => { const countryInfo = { img: c.flags.png, name: c.name, info: [ { title: 'Population', description: c.population.toLocaleString(), }, { title: 'Region', description: c.region, }, { title: 'Capital', description: c.capital, }, ], }; return ( ); })}
@mishanep
@mishanep Жыл бұрын
Object.Object говорит о том, что вы что-то не то передаёте на проп key. Вам нужна строка, вместо объекта
@velikorossnationalist4259
@velikorossnationalist4259 Жыл бұрын
@@mishanep увы но передаю все то что-вы в видео говорите...((
@markusha5630
@markusha5630 2 жыл бұрын
у кого будут проблемы в виде "TypeError: inputValue.match is not a function" при запросах, удаляйте расширение dev tools и заново устанавливаете
@markusha5630
@markusha5630 2 жыл бұрын
после кода на 1:05:43 у меня возникает 2к ошибок и я не могу найти ответа на них, в чем проблема не пойму, вот пример одной из них : react-dom.development.js:86 Warning: Encountered two children with the same key, `[object Object]`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted - the behavior is unsupported and could change in a future version. Предупреждение: обнаружены два дочерних элемента с одним и тем же ключом `[object Object]`. Ключи должны быть уникальными, чтобы компоненты сохраняли свою идентичность при обновлениях. Неуникальные ключи могут привести к дублированию и/или пропуску дочерних элементов - такое поведение не поддерживается и может измениться в будущей версии. хелп плз
@markusha5630
@markusha5630 2 жыл бұрын
короче от ошибок избавился поместив все в массив с объектами, а в качестве ключа предал index, но теперь проблема в том, что ничего не приходит от сервера,.... почему так сложно, почему нельзя просто
@markusha5630
@markusha5630 2 жыл бұрын
короче от сервера все приходит, но не отрисовывает
@mishanep
@mishanep 2 жыл бұрын
Дебажить надо, смотреть какие данные у вас имеются на конкретных этапах разработки. Попробуйте посмотреть мое видео по дебаггингу реакт-приложения, возможно поможет разобраться и в вашем вопросе kzbin.info/www/bejne/q6ermKBmjdhqsMk
@markusha5630
@markusha5630 2 жыл бұрын
@@mishanep первый раз мне автор отвечает, приятно)) оказывается данные с сервера приходят, но они не отрисовываются, то есть в консооль выводит, а на карточках пусто, как мне объяснил товарищ, проблема в том , что они приходят после отрисовки и не попадают в рендер, пока еще не решил проблему
@aleksandrmayboroda85
@aleksandrmayboroda85 2 жыл бұрын
Код компонента CustomSelect со стилизацией по документации: !!! ***Импорты могут отличаться от ваших import styled from 'styled-components' import Select from 'react-select' const CustomSelect = styled(Select).attrs({ styles: { control: (provided) => ({ ...provided, backgroundColor: 'var(--colors-ui-base)', color: 'var(--colors-text)', borderRadius: 'var(--radii)', padding: '0.25rem', border: 'none', boxShadow: 'var(--shadow)', height: '50px', }), option: (provided, state) => ({ ...provided, cursor: 'poiner', color: 'var(--colors-text)', backgroundColor: state.isSelected ? 'var(--colors-bg)' : 'var(--colors-ui-base)', }), singleValue: (provided) => ({ ...provided, color: 'var(--colors-text)', paddingLeft: '0.25rem' }), menu: (provided) => ({ ...provided, backgroundColor: 'var(--colors-ui-base)', boxShadow: 'var(--shadow)', borderRadius: 'var(--radii)', }), container: (provided) => ({ ...provided, width: '100%', "@media(min-width: 767px)": { width: '200px', } }) } })`` export default CustomSelect
@denmccormik7654
@denmccormik7654 2 жыл бұрын
только не понял почему в первом случае - var а во втором - нет const HeaderEl = styled.header` box-shadow: var(--shadow); background-color: (--colors-ui-base); `;
@mishanep
@mishanep 2 жыл бұрын
Там тож должен быть var. В строке писать css без подсветки - иногда чревато подобными ошибками =)
@denmccormik7654
@denmccormik7654 2 жыл бұрын
@@mishanep Вас понял, спасибо за уроки. Попал к вам через Router и очень понравилось. Сегодня прошел собес и получил работу.
@DmitriyDev
@DmitriyDev 2 жыл бұрын
Начинающему стоит смотреть?
@mishanep
@mishanep 2 жыл бұрын
Начинающий - понятие растяжимое =) Если есть базовое понимание в создании React-приложений, состояний, жизненного цикла, передачи компонентов, а также роутинга, то стоит. Если базы Реакта еще нет, то лучше сначала освоить ее.
@markusha5630
@markusha5630 2 жыл бұрын
Что такое attrs()??
@markusha5630
@markusha5630 2 жыл бұрын
а наверно понял: применяется только к тем тегам, у которых есть какие либо атрибуты(но не точно))))
@HowManyShrimps-g7z
@HowManyShrimps-g7z Жыл бұрын
ох, как же я не люблю styled-components, большая вероятность совершить грамматическую ошибку, а компилятор ничего не выдаст :(
@Volodymyr-vq5fm
@Volodymyr-vq5fm 4 ай бұрын
Очень путает когда ты почти все стили написал хотя еще даже локалку не запустил показать нам что там, или когда спешишь пишешь медиа запросы для телефонов когда еще пк только начинаешь делать
@den3212
@den3212 2 жыл бұрын
Прикольно, год назад выдел такой же проект, только другой подход kzbin.info/www/bejne/rKi9paB-iMZshbs
@Артем-в9э9щ
@Артем-в9э9щ 2 жыл бұрын
Если честно, я уже начиная со style-guide ничего не понял, какие-то непонятные вещи, переменные, лучшеб просто на реакте делали + sass
@kitsunaana9783
@kitsunaana9783 2 жыл бұрын
Значит, тебе было рановато такое делать
@denispilyutin4843
@denispilyutin4843 2 жыл бұрын
Спасибо , украл пару фишек)
@v.demchenko
@v.demchenko Жыл бұрын
Это худшее что я использовал в реакте. Styled Components... Не хорошие люди его создали. Что за синтаксис..
@bogdankozlovskiy715
@bogdankozlovskiy715 3 жыл бұрын
Огромное спасибо )) за контент
Авторизация в React-приложении с Firebase и Redux-Toolkit
47:24
Михаил Непомнящий
Рет қаралды 87 М.
World‘s Strongest Man VS Apple
01:00
Browney
Рет қаралды 67 МЛН
My Daughter's Dumplings Are Filled With Coins #funny #cute #comedy
00:18
Funny daughter's daily life
Рет қаралды 32 МЛН
Налог на незнание JavaScript - [Hamster Kombat]
50:20
СОБЕСЕДОВАНИЕ FRONTEND ЗП 220к JS, TS задачи
49:02
Кодерские собесы
Рет қаралды 88 М.
Советский мультфильм про нашу жизнь !
13:49
Дедушка Аргентинца
Рет қаралды 5 МЛН
Styled Components & React ПОЛНЫЙ КУРС
23:40
Ulbi TV
Рет қаралды 68 М.
World‘s Strongest Man VS Apple
01:00
Browney
Рет қаралды 67 МЛН