Компонент NavLink и его кастомизация в React-Router 6

Поделиться
HTML-код
  • Опубликовано: 10 ноя 2024

Комментарии • 116

  • @NARUTOJSIT
    @NARUTOJSIT 3 года назад +38

    Михаил продолжайте. Вы единственный кто затрагивает новые темы сразу же после их реализа.

  • @sergejg4773
    @sergejg4773 Год назад

    Отличный материал. Благодарю.

  • @ЮрійІвановичШтефанко

    Все четко разложено. Спасибо Брат!!!

  • @ЕвгенийНагаев-п9ч

    Михаил спаисбо за курс по новому React-router)))

  • @Taktweider
    @Taktweider 2 года назад +2

    Вот если в нашем мире, все бы отвечали именно так. То пропало слова: "я не понимаю".
    Спасибо)

  • @konglomora3230
    @konglomora3230 3 года назад

    Смотрю с удовольствием! Спасибо!

  • @азаматджунусов-л2з
    @азаматджунусов-л2з 2 года назад

    Михаил, большое спасибо, очень толковый контент!

  • @МихаилСабуров-ы1в

    Спасибо. То что нужно 👍

  • @dima_sand
    @dima_sand 3 года назад

    Спасибо за ваши очень полезные и актуальные видео ! ! !

  • @ХристианскаяЦерковьДубрава

    Мне очень помогло, спасибо вам большое!

  • @sevincmammadova3971
    @sevincmammadova3971 2 года назад

    Коротко и по делу. Как раз то, что искала. Спасибо, Михаил.

  • @МахмудЕблоев
    @МахмудЕблоев Год назад

    Спасибо огромно! Очень помогаешь в освоении материала!

  • @skrrboy9489
    @skrrboy9489 2 года назад

    Крайне редко оставляю комментарии, но тут не удержался. Отличный контент и подача, продолжайте Михаил!

  • @alsusayfulina1865
    @alsusayfulina1865 Год назад

    Михаил, спасибо большое! Очень нравится твоя подача материала 😃

  • @persitka
    @persitka 2 года назад

    Круто!! очень понравилось. Спасибо

  • @VaeV1ct1s
    @VaeV1ct1s 4 месяца назад

    Боже, благослави тех, кто выкладывает код на гитхаб

  • @АлексейМастяница-ы4е
    @АлексейМастяница-ы4е 3 года назад +1

    Что-то слишком часто годный контент выходит )

  • @СветланаАрхипенкова-р6у

    Спасибо! Всё очень понятно и просто!

  • @Zireael-Web
    @Zireael-Web Год назад

    Миша, спасибо большое, невероятно полюбил твои видео! В скором времени ещё и курсы твои куплю по TS, ты очень классно и просто объясняешь даже комплексные темы)

  • @romankrytski8687
    @romankrytski8687 Год назад

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

  • @АнтонРудь-н3ы
    @АнтонРудь-н3ы 3 года назад

    Как всегда лучшее объяснение 👍

  • @Windowsalerti
    @Windowsalerti 2 года назад

    Офигенно объясняете 😯 спасибо большое

  • @pavel_panchenko
    @pavel_panchenko 2 года назад +5

    Не знаю может я что-то делаю не так, но если использовать компонент layout в роутах обернув все роуты в один, и используя NavLink, ломается определение active класс, так как всегда / будет активна даже если переходишь на другой роут, то в итоге два активных класса получается

    • @sergeytwersky554
      @sergeytwersky554 2 года назад +3

      Добавьте в NavLink параметр end, это частично аналог exact из прошлой версии, говорит о том, что урл закончился и иных совпадений не ищи, в противном случае у вас все URL имеют в себе /, потому он всё считает за Home. Как-то так :)

    • @romanroman5820
      @romanroman5820 2 года назад +2

      @@sergeytwersky554Бро, спасибо тебе! Я почти час потратил в попытках догадаться что не так)

  • @АнатолийГорбов-о1ь

    Отличный цикл видео по 6 реакт роутеру! Автору большое спасибо за контент на канале!

  • @АнтонКурилик
    @АнтонКурилик Год назад

    Замечательное видео!!! Хотелось бы ещ такое же, только с TS )))

  • @Romulus585
    @Romulus585 2 года назад

    Спасибо большое! Обычно подача материала на разных каналах или дикция меня очень раздражает и проще было самому методом тыка и чтения документации разбираться. Теперь, дополнительно прослушивая ваши разборы различных тем стало куда проще разбираться и уверенней себя чувствовать.

  • @oleg_andrianov
    @oleg_andrianov 2 года назад

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

  • @maxet2374
    @maxet2374 3 года назад

    Быстро и понятно

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

    Отличная подача материала. Михаил, спасибо за урок.

  • @e_viskhan
    @e_viskhan 2 года назад

    Круто, спасибо!

  • @РусланБаченко
    @РусланБаченко 3 года назад +3

    Как по мне, то с active в пятой версии лучше, есть activeClassName activeStyle. Возможно это просто первое впечатление от 6 версии

  • @teosurch
    @teosurch 2 года назад +2

    Ты представит не можешь насколько твой канал 🏖 среди будущего 🌊 программирования)). Сейчас как раз делаю пет-проект, хочу на стажёра куда-то попасть. Все технологии которые хотел добавить- Router, Redux-toolkit, MaterialUI и другие... Обо всем есть видео от тебя. Самому с документацией сложнее было-бы разбираться в разы. И качество такое, что грех не понять :) Спасибо огромное!!!

    • @АлександрСуслов-с8п
      @АлександрСуслов-с8п 2 года назад

      Попал? На стажера?

    • @teosurch
      @teosurch 2 года назад

      @@АлександрСуслов-с8п да

    • @astkh4381
      @astkh4381 2 года назад

      @@teosurch какой город?

    • @teosurch
      @teosurch 2 года назад +1

      @@astkh4381 Та от як бачиш з моєї російської - Львів

    • @astkh4381
      @astkh4381 2 года назад

      @@teosurch честно говоря я тебя не понял

  • @toshikbond
    @toshikbond 2 года назад

    очень доступно, спасибо

  • @sanbuz
    @sanbuz Год назад

    спасибо !

  • @JamesAlmer
    @JamesAlmer Год назад

    Не понимаю почему после смены тега на у меня пустая страница?

  • @AI_about_crypto
    @AI_about_crypto 3 года назад +7

    Разобрался. className={({isActive})=>isActive ? s.activeLink : ' '} - где "s" это имя объекта который использует модульность css в React. Его вы можете указывать любое. Указывается оно при импорте import s from "./MenuHead.module.css"; вместе с путем к css файлу.

    • @TheTurbobarbitura
      @TheTurbobarbitura 3 года назад

      а в модуле цсс какой путь к этому классу пишешь?

    • @AI_about_crypto
      @AI_about_crypto 3 года назад

      @@TheTurbobarbitura .activeLink {}

    • @TheTurbobarbitura
      @TheTurbobarbitura 3 года назад +1

      @@AI_about_crypto спасибо огромное, бро! Тоже прохожу курс по реакту, тоже уперся в эту проблему... у меня получилось .item .activeLink. Надо бы в группу в телег по хорошему пост с визуализацией сделать, там очень часто это спрашивают.

    • @maksimus.ssirotkin1124
      @maksimus.ssirotkin1124 3 года назад

      Здравствуйте, не получается сделать так чтобы ссылка когда активна меняла свой цвет, у меня она постоянна, т/е как активна всегда

    • @TheTurbobarbitura
      @TheTurbobarbitura 3 года назад

      @@maksimus.ssirotkin1124 а проверку делаете на наличие активного класснейма?

  • @maksimvasyuk5935
    @maksimvasyuk5935 3 года назад

    Спасибо!

  • @ДмитрийМельников-ъ3в

    Супер!

  • @dim3143
    @dim3143 2 года назад +1

    Не подскажите, а при использовании вложенных ссылок, скажем /blog/cats... ссылка у blog останется активной или будет активна последняя вложенная ссылка?

  • @firemanhood1526
    @firemanhood1526 2 года назад +1

    00:31:00 как ты выделяешь все теги, чтоб их заменить? Круто было бы отображать нажатие клавиш (hotkey), есть такие проги. Очень полезная история) Спасибо!

  • @wonderland5297
    @wonderland5297 2 года назад

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

  • @ihorozerov2094
    @ihorozerov2094 2 года назад +1

    Почему может не работать способ с className?

  • @YaniaRZ
    @YaniaRZ Год назад

    Спасибо за плейлист! А можно узнать как вы так разворачиваете компоненты? Это свой сниппет какой-то?

    • @mishanep
      @mishanep  Год назад +1

      Я уже деталей конкретного видео не помню. Иногда пользовался готовыми сниппетами через расширения, иногда самописными. Сегодня всё чаще самописными.

  • @garikmelqonyan6011
    @garikmelqonyan6011 Год назад

    👍

  • @Nic13595
    @Nic13595 Год назад

    Всем привет, как он в VS коде удаляет и вставляет сразу в несколько мест-строк? Подскажите плиз

  • @АлександрПлуталов-ъ4ш

    почему то корневая ссылка имеет постоянный цвет при переключении, когда NavLink подключил на остальных цвет меняется а Home нет

    • @konstant1n-t8j
      @konstant1n-t8j 2 года назад +1

      Добавь в пропсы NavLink - end

    • @alexplutalov5809
      @alexplutalov5809 2 года назад

      @@konstant1n-t8j ага в доках нашёл

  • @shoxerpetrosyan8678
    @shoxerpetrosyan8678 2 года назад

    woow Im expressed
    TNX ,very simple

  • @AI_about_crypto
    @AI_about_crypto 3 года назад

    Подписка!Лайк. Объясните только пожалуйста, как добавить activeClassName если используешь модули css.

  • @yrasabat1342
    @yrasabat1342 2 года назад

    In new versions haven`t "useMatch", so you can use isActive ( isActive ? ' ' : ' '>... ) instead of & "useMatch" in your custom-links.

  • @Павел-п2э
    @Павел-п2э 3 года назад

    Спасибо вам за топовый контент. Есть вопрос, если я работаю с препроцессором sass и ещё у меня все в модулях, если я буду использовать просто Link, мой класс не будет считываться, потому что по умолчанию в class падает просто active. Получается я по умолчанию должен использовать тернарный оператор и задавать нужный класс?

    • @mishanep
      @mishanep  3 года назад +1

      Да, при использовании модулей, для указания активного css-класса в className передается функция и для ключа isActive по тернарнику назначается желаемый класс или пустая строка.

  • @sean1000
    @sean1000 Год назад

    0:31 какая комбинация для выделения?

  • @ignat3377
    @ignat3377 3 года назад

    Великолепное видео, сделайте пожалуйста туториал по React Redux, был бы крайне признателен

    • @mishanep
      @mishanep  3 года назад

      У меня на канале есть 3 ролика про Redux Toolkit.

  • @victormog
    @victormog 3 года назад +1

    У Вас тоже последнее время create-react-app создаёт приложение, которое запускается с какой-то ошибкой в postcss?

    • @mishanep
      @mishanep  3 года назад +1

      Нет, не натыкался

    • @victormog
      @victormog 3 года назад +1

      @@mishanep
      Вот же засада...

  • @artyrdanilov2791
    @artyrdanilov2791 Год назад

    а что за горячие клавиши для того что бы развернуть const CustomLink ?

    • @mishanep
      @mishanep  Год назад

      Не понимаю о чем речь.

    • @artyrdanilov2791
      @artyrdanilov2791 Год назад

      @@mishanep вы пишите _rafce и у вас разворачивается функция. ну или const и компонент готовый. когда я пишу в висуалстудия _rafce у меня ничего не выдаёт.

    • @mishanep
      @mishanep  Год назад +1

      @@artyrdanilov2791 тогда это не хоткей. Эта штука называется сниппетом. У меня есть отдельный ролик на эту тему. Можно создавать свои собственные, можно установить расширения с готовыми наборами сниппетов. В этом ролике сниппет из расширения (react, redux что-то там snippet). Сегодня я кастомные использую.

    • @artyrdanilov2791
      @artyrdanilov2791 Год назад

      @@mishanep можно ссылку на видео?

  • @n_u_b_o_m
    @n_u_b_o_m 2 года назад

    Михаил, подскажите пожалуйста, как выглядит CustomLink на typescript?

    • @mishanep
      @mishanep  2 года назад +1

      import type { LinkProps } from "react-router-dom";
      const CustomLink: React.FC = (props) => {}

  • @AndranikArshakyan
    @AndranikArshakyan 2 года назад

    Компонент NavLink и его кастомизация в React-Router 6

  • @firemanhood1526
    @firemanhood1526 2 года назад

    Подскажите, как сделать чтоб navLink to="/people/page" был активен и по пути /people/person?

    • @mishanep
      @mishanep  2 года назад

      У вас два алиаса на одну страницу? Или вам просто надо чтобы активность отображалась как с гет-параметрами, так и без оных? Как разруливаются гет-параметры - в заключительном видео цикла рассмотрено.

  • @mivalb7979
    @mivalb7979 2 года назад +1

    Михаил, спасибо за контент! Я в приложении использую Ant Disign. В компоненте Sider, который предлагает биб-ка есть поля Menu.Item для навигации, которые при клике становятся активными (добавляются некоторые классы). В эти Menu.Item я вставил для переключения страниц. Но у меня внутри страниц тоже есть ссылки, которые ведут на те же роуты. Как сделать так, чтобы при клике на ссылку внутри страниц, менялась отображение активности у полей Menu.Item в Sider?

    • @mishanep
      @mishanep  2 года назад +1

      У вашего компонента с меню есть проп selectedKeys. Если вы будете управлять им самостоятельно, то сможете добиться желаемого поведения. По умолчанию Ant предлагает меню как неконтролируемый компонент, но предоставляет инструмент для управления им.

    • @teosurch
      @teosurch 2 года назад

      @@mishanep у вас в коментарях настоящий stackoverflow :)

  • @jenyaspace
    @jenyaspace 2 года назад

    Не пойму чем отличаются компоненты NavLink от Link

  • @RewCSharp
    @RewCSharp 11 месяцев назад

    Михаил, здравствуйте. А как сделать ссылку такую, чтобы не на одну страницу все подгружалось, а чтобы при клике по ссылке я переходил на другую страницу

    • @mishanep
      @mishanep  11 месяцев назад

      Признаться не совсем понимаю сути вопроса. Если функционал SPA не нужен и надо перейти на страницу сайта за пределами клиентского роутинга, то используйте обычный тег ссылки

    • @RewCSharp
      @RewCSharp 11 месяцев назад

      @@mishanep я так и делал в начале, но почему то , при верном пути этот тег не срабатывал

  • @metall1c
    @metall1c 2 года назад

    почему вы меняете
    export default ComponentName
    на
    export {ComponentName}
    ?
    в чем разница?

    • @mishanep
      @mishanep  2 года назад

      В JS есть разные варианты экспортов
      developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/export
      Разница будет в последующем потреблении, то бишь в том как оно будет импортироваться. При дефолтном экспорте в момент импорта вы можете обозвать импортируемый компонент как угодно и JavaScript не обидится. Другой вариант - именованный, и при импорте идет что-то вроде деструктуризации объекта по имени ключа.

    • @metall1c
      @metall1c 2 года назад

      @@mishanep спасибо за развернутый ответ

  • @МаксимЛибер-ф2н
    @МаксимЛибер-ф2н 3 года назад

    Михаил, подскажите, могу ли я повесить свой обработчик кликак на Link. Это работает, но ни является ли это плохой практикой. Я хочу делать scrollToTop на активном линке:
    const scrollToTop = () => match && scrollTo(0,0)

    • @mishanep
      @mishanep  3 года назад +1

      По мне - это две разные истории. Link предназначен для навигации между страницами, а подскролл - это больше про якорное меню. Для якорного меню не нужен роутинг.

  • @Mike-hp5vr
    @Mike-hp5vr 2 года назад

    Подскажите пожалуйста, в чем может быть проблема. _rafce не работает в vsCode, то есть не разворачивается автоматически функциональный компонент, emmet даже не предлагает. На этом видео видно, что все ок (когда, к примеру, создается SinglePage.jsx). Что такое расширение ES7+ React snippets знаю, не то. Как работает нижнее подчеркивание, что оно означает в данном контексте, тоже интересно. p.s. Гугл не помог, как только не искал =(

  • @from_brest2631
    @from_brest2631 3 года назад

    лойс

  • @kimanowka
    @kimanowka 3 года назад

    Михаил, расскажите про нововведения в navigate и отображения,так скажем, детальных страниц. Спасибо)

    • @mishanep
      @mishanep  3 года назад +1

      Само собой, и до этого доберёмся :)

  • @ДмитрийДмитриевич-ы2о

    михаил у вас есть платные консультации ? если да, то как с вами связаться

  • @TestSpace-e8k
    @TestSpace-e8k Год назад

    нЕ РАБОтаетть такой подход с setActive, незнаю что делать код верный 100%

  • @animus9935
    @animus9935 Год назад

    неочень понял зачем делать кастом линк почему просто не воспользоваться NavLink ом?

  • @Pavel-wj7gy
    @Pavel-wj7gy Год назад

    Зачем нужен кастомный компонент, если он реализует 99% функционала NavLink? Почему не использовать NavLink? Спрашиваю без пассивной агрессии, правда интересно.

  • @dim3143
    @dim3143 2 года назад

    консольку так и не показал :(

  • @darieandre5598
    @darieandre5598 2 года назад

    +

  • @Dan-p7f
    @Dan-p7f 2 года назад

    Спасибо!!!