60 - React JS - withRouter, props.match.params

Поделиться
HTML-код
  • Опубликовано: 27 сен 2024
  • 🚀Стань квалифицированным разработчиком за 9+ месяцев с трудоустройством в IT -INCUBATOR:
    Front-end
    it-incubator.i...
    Back-end
    it-incubator.i...
    Поддержать меня можно на patreon / itkamasutra или оформив спонсорство на данном канале.
    Помогайте друг другу вот здесь: t.me/reactjs_s...
    API: social-network...
    URL-адрес, текущий адрес страницы, это тоже ИСТИНА. До этого у нас истиной был BLL (Redux, state), и UI (React) зависел только от него, а сейчас у нас истиной ещё стал и URL-адрес!!!
    Чтобы работать с адресом, компоненте нужно получить через props нужные данные. Где их взять в props? С помощью HOC-функции withRouter!
    Функция withRouter наподобие функции connect создаёт над отданной ей компонентой ещё одну контейнерную, которая добавит в нашу целевую компоненту через пропсы нужные данные.
    В нашем случае нас интересует props.match.params!
    Летим!!!
    Уроки по React JS: • Курс "React JS - путь ...
    * Сайты:
    it-kamasutra.com
    it-incubator.eu
    samuraijs.com
    * Мы в соц. сетях:
    itkamas...
    / itkamasutra
    telegram.me/it...
    * Мои личные VK и Insta:
    d.kuzyu...
    / it.kamasutra.dimych
    #withRouter #match #reactjs #практика #примеры #уроки #курс

Комментарии • 1,4 тыс.

  • @ІгорСнігур-х1л
    @ІгорСнігур-х1л 4 года назад +262

    Я с Димычем уже настолько преисполнился, что как будто бы уже 100 триллионов миллиардов лет проживаю на триллионах и триллионах таких же планет

    • @ITKAMASUTRA
      @ITKAMASUTRA  4 года назад +22

      )))) Бро!

    • @vitektychowski5220
      @vitektychowski5220 4 года назад +5

      xaxaxaaxx :D
      Красиво сказано +++

    • @СергейГурбин-г7к
      @СергейГурбин-г7к 4 года назад +81

      Я с Димычем в своем познании фронтенда уже настолько преисполнился что я как будто уже сто триллионов миллиардов лет пишу код на триллионах и триллионах таких же реактивных фреймворков как этот React, мне этот JavaScript уже абсолютно понятен и я здесь ищу только одного - чистого кода, умиротворения и вот этой гармонии от статической типизации тайпскрипта, от созерцания великого фрактального подобия и от вот этого замечательного всеединства стейта.= ))))))

    • @АртурШогенов-ч8ы
      @АртурШогенов-ч8ы 4 года назад

      @@СергейГурбин-г7к Красава!))

    • @artempavlenko5147
      @artempavlenko5147 4 года назад +1

      хахаха. ruclips.net/video/UMRNfWSwmPo/видео.html&has_verified=1

  • @yuriipidlisnyi2248
    @yuriipidlisnyi2248 2 года назад +220

    Ребята, кто писал проект на react router v6, нужно использовать хуки, а не HOC шаблон. Но по скольку в курсе наша контейнерная компонента ProfileContainer - классовая компонента, то мы не можем использовать хуки в классвовых компонентах. Есть решение из оффициальной документации - создать функцию-обёртку, которая по принципу идентична к withRouter:import {
    useLocation,
    useNavigate,
    useParams,
    } from "react-router-dom";
    // wrapper to use react router's v6 hooks in class component(to use HOC pattern, like in router v5)
    function withRouter(Component) {
    function ComponentWithRouterProp(props) {
    let location = useLocation();
    let navigate = useNavigate();
    let params = useParams();
    return (
    );
    }
    return ComponentWithRouterProp;
    }
    И теперь, эту функцию нужно использовать👇
    export default connect(mapStateToProps, {setUserProfile})(withRouter(ProfileContainer));
    Затем, в классе ProfileContainer мы можем получить айдишку пользователя, прописав:
    let profileId = this.props.router.params.profileId;
    И все, дальше меняем URL запроса, и обновляем данные профиля в зависимости от айди пользователя

    • @МарияПронина-н4у
      @МарияПронина-н4у 2 года назад +2

      Весто ПрофайлИнфо висит постоянно Прелодер, в чем у меня может быть ошибка?

    • @maxim.saharov
      @maxim.saharov 2 года назад +14

      так Димыч писал -
      "let userId = this.props.router.params.userId;"
      так вы написали
      "let profileId = this.props.router.params.profileId;"
      а так все огонь - все работает - подтверждаю!
      Спасибо большое что нашли где то такой чудо код и выложили сюда!!
      А то я вообще встрял тут - по коментам ниже ничего не мог реализовать.

    • @maxim.saharov
      @maxim.saharov 2 года назад +12

      а есть какое то решение что бы выводило что то по умолчанию когда переходим на страницу профиля ?
      потому что если так писать:
      path='/profile/:userId?'
      - то вообще перестает работать хоть какая то переадресация и в консоле пишет - No routes matched location "/profile"

    • @user-zn3wi5cu9p
      @user-zn3wi5cu9p 2 года назад

      @@maxim.saharov мне кажется для этого существует useParams, но я не понял как она работает

    • @МарияПронина-н4у
      @МарияПронина-н4у 2 года назад

      @@maxim.saharov Можете скинуть код странички целиком? Заранее спасибо)

  • @ИгорьФесик-ж7н
    @ИгорьФесик-ж7н 4 года назад +182

    Чувствую через 30 видосов:
    Димыч: "-...ну а для этого мы просто создаём 50-юу контейнерную компоненту"

    • @Kirdaro
      @Kirdaro 3 года назад +44

      а потом в следующем, они нам все были не нужны на самом деле, сейчас зарефакторим)

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

      @@Kirdaro ахах)))

  • @vseslavr
    @vseslavr 4 года назад +73

    1000+ лайков и 0 дизлайков. Я думаю, что это о чем нибудь да говорит. Димыч ты просто супер!

    • @ITKAMASUTRA
      @ITKAMASUTRA  4 года назад +6

      Спасибо вам, ребята!!

    • @VSsoviet
      @VSsoviet 4 года назад

      до сих пор 0 дизлайков))

    • @bbbh_615
      @bbbh_615 4 года назад +2

      тем времени 2к+ лойсов и всего 1 диз

  • @evgeniyn1542
    @evgeniyn1542 4 года назад +65

    Теперь вместо withRouter можно юзать хуки: useHistory, useLocation, useParams, useRouteMatch.
    Спасибо Димыч за инфу. :)

    • @ITKAMASUTRA
      @ITKAMASUTRA  4 года назад +11

      Уже во 2 сезоне об этом рассказываю! ✊

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

      @@ITKAMASUTRA можно ссылку?

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

      @@romanvolovyk968 просто введи путь самурая 2.0, увидишь сразу)

    • @МаксимКоробков-программисттрей
      @МаксимКоробков-программисттрей 3 года назад +3

      1 сезон пишу сеть с Димычем. Но проект встал , можете подсказать конкретный видос как исправить хуком ?

    • @sarsenm5874
      @sarsenm5874 2 года назад +6

      что бы этот урок заработал нужно установить react-router-dom версию 5, командой npm i react-router-dom@5 тогда появится withRouter

  • @OlegMavlyutov
    @OlegMavlyutov 4 года назад +24

    То чувство, когда Димыч просит поставить лайк, а я его поставил сразу после открытия ролика 😳

  • @volleyballist91
    @volleyballist91 2 года назад +21

    Димыч я не знаю, читаешь ли ты комменты спустя два года после выпуска своего курса, но все равно напишу: твой труд и старание, которое ты словно передаешь через каждый пиксель моего монитора, заслуживает неиссякаемого потока уважения к тебе! я пока только стучусь в двери большого программирования, но знаю, что с твоей помощью смогу выбивать эту дверь с ноги!) обнял

  • @IgorIckra
    @IgorIckra Год назад +4

    Вот я прохожу сей курс в 01.06.2023 и этот урок один единый код из комментариев, вот честно. Ибо withRouter пришлось написать самому(а точнее скопипастить из коментов, и я очень сильно благодарен людям пишущим решение тех или иных проблем в коментах), и чтобы переходить на свою страницу пользователя пришлось тоже скопипастить код. Но я благодарен Димычу за сей курс видеороликов, ибо столь годный курс ,тяжело найти на просторах интернета да ещё и за бесплатно .

  • @vityaost
    @vityaost 2 года назад +14

    Гайс, не нада никуда откатывать проект. Вот решение:
    в контейнерной компоненте между connect и classComponent делаем еще одну функцию:
    const TakeParams = (props) => {
    return
    }
    connect должен вызывать TakeParams во вторых скобках, а TakeParams вместо ProfileContainer должен вызывать вашу classComponent (классовую компоненту). Теперь в классовую компоненту передаются пропсы из connect + в пропсах передается свойство param в котором под ключем id есть номер юзера)
    Хреновато обьяснил, но пробуйте. Все получится)

    • @ЮраАндрианов-г2ф
      @ЮраАндрианов-г2ф 2 года назад

      Отлично работает, спасибо, насколько понял это "не костыльное" решение применительно к роутердому 6, ежели withRouter нам нужен был только чтобы достать параметры, то это даже лучше)

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

      @@ЮраАндрианов-г2ф да. Это не костыльное решение. Это даже можна сказать современное решение)) Но когда я делал это задание - я совсем не понимал что такое хуки))

    • @ЮраАндрианов-г2ф
      @ЮраАндрианов-г2ф 2 года назад

      @@vityaost если интересно то на 70 уроке, после рефакторинга с компостом,
      наш тейк парамс такой:
      function TakeParams(props) {
      return ;
      }
      а экспорт такой:
      export default compose(
      connect(mapStateToProps, {getUserProfile}),
      withAuthNavigate
      ) (TakeParams);
      Вдруг пригодится) Хотя конечно хотелось бы тейк парамс засунуть в конвеер компОса, но хз пока как, мы же там пропсы кидаем.

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

      @@ЮраАндрианов-г2ф я дошел до уроков форм и начал более свежие курсы проходить

    • @ЮраАндрианов-г2ф
      @ЮраАндрианов-г2ф 2 года назад

      @@vityaost Быстро, успехов)

  • @user-ov8mx3ej4z
    @user-ov8mx3ej4z Год назад +15

    Декабрь 2022 Проблема и решение
    На сегодняшний момент withRouter больше не поддерживается, да и те решения, которые я нашел в комментариях под этим видео, не совсем решают проблему. В частности, после перехода с profile/userId на просто profile, то не происходит перерисовки на наш профайл.
    Решение всех проблем:
    1)Пишем его самостоятельно WithRouter, перед компонентной ProfileContainer :
    function withRouter(Children){
    return(props)=>{
    const match = {params: useParams()};
    return
    }
    }
    2) вверху соответственно:
    import { useParams} from 'react-router-dom';
    В функции connect пишем всё как у Димыча
    3)Сама компонента ProfileContainer должна выглядить так:
    class ProfileContainer extends React.Component {
    redirectToMainUser() {
    let userId = this.props.match.params.userId;
    // let userId = this.props.router.params.userId;
    if(!userId) {
    userId = 26923; //Пишем Ваш id
    }
    this.props.getUserProfile(userId);
    this.props.getStatus(userId);
    }
    componentDidMount() {
    this.redirectToMainUser();
    }
    componentDidUpdate(prevProps){
    if(this.props.isMain !== prevProps.isMain) {
    if(this.props.isMain){
    this.redirectToMainUser();
    }
    }
    }
    render() {...тут всё без изменений}
    4)В app.js пишем так:
    На текущий момент всё работает именно так.
    На решение проблемы у меня ушло несколько дней.
    Что именно мы сделали?
    Помимо написания собственного withRouter
    1)Добавили атрибут isMain={true} компоненте, чей path="/profile"
    2)Теперь, когда у нас выскакивает соответсвующий url то в пропсы прилетает этот атрибут. И если он прилетает, то мы обновляем компоненту. До этого она просто не обновлялась, так как у нас был только componentDidMount, который срабатывал только 1 раз, а ComponentDidUpdate небыло.
    3)В ComponentDidUpdate в качестве аргумента приходит два параметра (prevProps, prevState) - предыдущие пропсы и предыдущее состояние (это будет в следующих уроках). Поскольку prevState нам не нужно, то мы принимаем только prevProps. И тут мы просто сравниваем предыдущие пропсы (где атрибута isMain нет) с новыми пропсами(где он соответственно есть). А далее, если он === true, то перерисовываем компоненту (выполняем всё то, что было в compomnentDidMount Димыча)
    Кому не совсем понятно что я написал, попытайтесь вникнуть самостоятельно в код, проследить логическую цепочку. На 60 уроке, я думаю, это уже не должно составлять большого труда. Всех с наступающим Новым Годом!)

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

      ппц(, реально, так "кратко" пишется в продакшене? а то чете "слошно"
      ...у меня способ работает, спс!

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

      Спасибо большое, на основе твоего кода смог решить эту проблему, сильно выручил.Ни как бы не додумался так написать withRouter!!

    • @kseniiaefremova4696
      @kseniiaefremova4696 Год назад +2

      а где писать про axios.get( бла-бла-бла)? вы кажется забыли

    • @RebooT_Channel
      @RebooT_Channel 7 месяцев назад +1

      На дворе 2к24, так что лови огромную благодарность из будущего =) Просто снимаю шляпу! Надеюсь на все твои вопросы всегда найдется такой же прекрасный ответ на СтакОверфлоу...

  • @viktorshatalov1920
    @viktorshatalov1920 5 лет назад +38

    все новое для меня!!! а что знал - то, повторение - мать учения!спасибо Дима за курс

  • @sashaya6114
    @sashaya6114 4 года назад +11

    React, withRouter, props.match.params, javascript, спасибо Димыч!)

  • @amaxe12345
    @amaxe12345 4 года назад +11

    Не знал, что такое withRouter. Димыч, спасибо за урок!!! #hoc #withRouter #reactjs

  • @DmytroLazarenko
    @DmytroLazarenko 4 года назад +16

    withRouter круто обяснил, Спасибо за курс)было бы время я бы все еще раз пересмотрел)

  • @yuryhouse4226
    @yuryhouse4226 3 года назад +9

    Решил попробовать свои силы после 53 урока. Там меня знатно отпинали по замыканию. Сегодны пришел feedback. Предложили стажировку без оплаты на 1 месяц, а далее всё зависит от меня. Не знаю пока подробностей, но хочу сказать СПАСИБО Димычу. Надеюсь в параллели закончить курс Димыча, чтобы стать самурайчиком и не зафэйлить шанс.

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

      красавчик)

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

      Как успехи, чел?

  • @mrfun9841
    @mrfun9841 5 лет назад +17

    спасибо , то чего 2 дня не мог сделать благодаоья вам смог )) Огромное спасибо))

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

    Благодарю за такой мегакурс, Дима. Ребята, всем спасибо за комменты, подсказки и варианты готового решения. Гиперреспект!!!

  • @Vllad_Ko
    @Vllad_Ko 4 года назад +7

    Не знал, что такое withRouter ))) Ох и намучился два часа смотрел пересматривал это полезнейшее видео из курса React Redux

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

      8 месяцев назад, ну и как? трудоустроился?

  • @alexZP
    @alexZP 2 года назад +8

    У кого проблемы в 2022г с withRouter - он в современном мире не используется. Что бы он работал нужно в консоли удалить ДОМ - npm uninstall react-router-dom , А затем установить ДОМ старой версии npm i react-router-dom@5.2.0 . Ели ранее делали роуты в APP.s каким то новым (например обертка Роутерс) способом - придется переделать на старый способ (урок Димыча)

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

      спасибо

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

      Блин, от души спасибо Ман, пол дня ежа на глобус натягивал, пока не откатился до 5.2.0

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

      @@Lok1goD сам долго страдал))

  • @ILyxaFedoseev
    @ILyxaFedoseev 3 года назад +4

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

  • @karway211
    @karway211 4 года назад

    Не знал что такое withRouter! Лучшие уроки по React & Redux! React
    , Redux , курс React, State, Store, Dispatch ,Connect, Action, Route, Provider, Reducer, mapStateToProps, mapDispatchToProps, lessons of React & Redux, курсы по React с практикой, React.Component, Ajax, Axios, pagination, withRouter.

  • @АртемКулинский-ю4о
    @АртемКулинский-ю4о 3 года назад +5

    Дмитрий лучший преподаватель, который у меня был когда - либо! Глубокое уважение! Великолепный курс по React - Redux. Склоняюсь перед вашим умом, силой воли и добротой! Так держать!

  • @lelkamod
    @lelkamod 4 года назад +2

    Не знала что такое withRouter, использовала ConnectedRouter для доступа к match.params.
    Классно было узнать как оно было изначально) Спасибо!!!

  • @bakelev
    @bakelev 4 года назад +4

    React JS - withRouter, props.match.params - это круто!

  • @gregorytorshin2574
    @gregorytorshin2574 4 года назад

    Открыл видос, поставил лайк, написал коммент, теперь можно смотреть спокойно) withRouter не знаю пока

  • @kub1k
    @kub1k 4 года назад +4

    Самые лучшие уроки по React & Redux!

  • @dlucky13
    @dlucky13 4 года назад

    Прикольная тема с пасхалками катаны))). На этот раз над дверью)) React Redux)

  • @Dozortsev
    @Dozortsev 5 лет назад +6

    Спасибо за видосы! Отлично объясняешь! Всё понятно про withRouter и Router!

  • @miroslavtoikin
    @miroslavtoikin 4 года назад +2

    Лучший курс React/Redux! Много нового, но и то что уже знал смотреть не скучно

  • @airpodsclub6443
    @airpodsclub6443 2 года назад +7

    в реакт роутер 6, вместо того чтобы писать оборачивать компоненту с помощью with params, можно внутри контейнерной компоненты вызвать хук UseParams(). Получение UserId будет выглядеть следующим образом:
    1. Основной путь.
    2. Внутренности компоненты: const { userId } = useParams();

  • @МаксимМинаков-я9о
    @МаксимМинаков-я9о Месяц назад

    Ну с 8го раза я дошёл до этой серии, по одной серии в день в последний раз начал чтоб осознавать сказанное и заработал этот подход а не галопом.

  • @gorillatv577
    @gorillatv577 5 лет назад +4

    Очень понятно и доходчиво! Спасибо! Надеюсь, до конца лета будут все 100 выпусков(

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

    Перед просмотром видео про withRouter не знал)

  • @janechaus4630
    @janechaus4630 3 года назад +3

    Огромный респект Вам, Дмитрий! Вся информация очень доступна и легко усваивается! Вперед к мечте!

  • @olegvoloshin2729
    @olegvoloshin2729 4 года назад +1

    withRouter в копилку! Эти знания очень драгоценны, спасибо за видосы!

  • @fantast2568
    @fantast2568 5 лет назад +7

    Как всегда на высоте :) Спасибо Димыч !!!

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

    пасибо Димыч, разложил по полочкам withRouter ReactJS, withRouter, ContainerComponent, Redux. Современный JS со всеми наворотами и новинками одному навряд ли разгрести. Спасибо Димычу! React Путь самурая - супер курс!!!!
    Димыч спасибо , круто обьясняешь . Я сижу кушаю яблочко после удаленки и понимаю ,что ты круче наших учетелей раз в 100.
    React JS - withRouter, props.match.params - все круто, все получается, большое спасибо за выпуск !

  • @ЛусінеАтаджанян
    @ЛусінеАтаджанян 3 года назад +1

    HOC. Компонента высшего порядка. withRouter. React JS. JavaScript. Лучшие курсы по реакту. Дима, спасибо за курс

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

    Спасибо Димыч, вот и познакомился я с withRouter

  • @andreityryshkin3784
    @andreityryshkin3784 4 года назад +3

    кстати было бы класно увидеть список терминов которых надо знать определения
    к примеру
    React, Redux , SPA, UI, BLL, render, JSX, компонента, callback, ну и так далее))) наверно список около соттни будит

  • @ЧиНеНайрозумніший
    @ЧиНеНайрозумніший 4 года назад +1

    Лучший курс Ract, Redux, Hight Order Component, Connect, WithRouter
    Димыч, спасибо за труд!

  • @ЯрославФедан-щ1к
    @ЯрославФедан-щ1к 5 лет назад +6

    Спасибо, молодец, так держать

  • @6ajkermexx591
    @6ajkermexx591 3 года назад

    Про withRouter не знал до этого видео)))

  • @АлександрВидин-с6я

    Повторно прохожу курс. Как и говорит Димыч, второй раз на перемотке, и всё понятно. Плюс закрываются некоторые дыры в знаниях.

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

    В React Router v6 убрали возможность опциональных путей, насколько я понял, поэтому можно воспользоваться

    • @ИванБезруков-л3у
      @ИванБезруков-л3у 2 года назад

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

    • @Rakhmankuloff-c7b
      @Rakhmankuloff-c7b 2 года назад

      @@ИванБезруков-л3у если ты попробуешь сначала зайти на страницу пользователя (любого), а потом на свою через навлинк в навбаре, у тебя ничего не получится

  • @kwantvic
    @kwantvic 4 года назад

    Теперь знаю про withRouter) 👍 thanks 🙏

  • @Smash69ful
    @Smash69ful 4 года назад +1

    Спасибо за курс. withRouter, props.match.params, react, redux.

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

    Сегодня узнали о withRouter, props.match.params
    Спасибо, бомбим дальше!

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

    withRouter, props.match.params
    СПАСИБО!

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

    Привет! Ничего не знаю о withRouter(-ах), но совсем скоро узнаю))).
    А вообще, хочу выразить благодарность Диме за этот курс и за подход! Судя по манере общения, Дима очень хороший человек! Очень классно, что при этом ещё трудолюбивый и талантливый. Успехов тебе в твойм деле. Оно и пользу приносит, и уникальное в своём роде. Ну и конечно же желаю, чтобы вернулось тебе вдвойне ха твои старания в денежном эквиваленте )))

  • @ИльяИваник-ф8ф
    @ИльяИваник-ф8ф 4 года назад +6

    Так же я капец как намучался со следующим: допустим у нас медленная сеть и слева под навбаром отображаются друзья (кликая по которым - мы должны показать profile соответствующего человека). Сеть медленна и пользователь кликает 3-4 запроса подряд: id=1, id=3, id=100, id=2. Я сделал так, чтобы после того, как мне пришел response от axios - я проверяю, что у меня в URL все еще запрашивается тот же самый пользователь, который пришел в ответе. В противном случае - игнорировать ответ сервера (типа он уже не актуален для пользователя).
    Но это пол-беды и было не так уж сложно. Но!!! Что если пользователь вызвал axios с profile id=3 и не дождавшись ответа ушел на music, например. Я пропалил по консольке - хотя выполняется componentWillUnmount (т.е. инстанс компоненты убивается, и там я даже делаю редьюсер return { ...initialState }) но axios все равно возвращает свой ответ и записывает свои данные в state (как я понял из-за того, что он асинхронно это делает). В итоге я как-то прописал люгику, что все это работает, но вышло не сильно красиво ... я уверен, что есть куда более нормальный способ это сделать. Жаль, что скорее всего мы его не рассмотрим ...

  • @aleksandrzelenskiy4000
    @aleksandrzelenskiy4000 4 года назад

    Идем идем, маленькими шагами вперед! withRouter не знал до выпуска

  • @АртурАнтисептик
    @АртурАнтисептик 2 года назад +3

    Для тех, у кого не переходит при клике Navbar Profile на свою страницу, а остается страница пользователя. Есть решение:
    Так как по данному роуту рендериться один и тот же компонент, не происходит его размонитрования из dom при смене url.
    Поэтому нам стоит добавить метод componentDidUpdate в котором мы будем сравнивать:
    componentDidUpdate(prevProps) {
    let userId = this.props.router.params.userId
    if (prevProps.router.params.userId !== userId) {
    let userId = 2
    axios.get(//Закиньте ссылку, коммент удаляется)
    .then(response => {
    this.props.setUserProfile(response.data);
    });
    }
    }

  • @МихаилКарамзин-ы1д
    @МихаилКарамзин-ы1д 4 года назад

    WithRouter, props.match.params!!!
    Летим!!!

  • @СергейЛогинов-ж9ж
    @СергейЛогинов-ж9ж 4 года назад +4

    Спасибо! Не хватило только рассмотреть вопроса парсинга get параметров. как я понял это роутер не делает?

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

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

  • @ЮрийЗолотов-б1р
    @ЮрийЗолотов-б1р 2 года назад +7

    Всем привет! В дополнение к посту ptlatka: в react router 6 не срабатывает параметр по умолчанию в . Для того, чтобы нормально отобразилась страница по умолчанию нужно просто добавить еще один Route:

    .
    .
    .

    • @Rakhmankuloff-c7b
      @Rakhmankuloff-c7b 2 года назад

      если ты попробуешь сначала зайти на страницу пользователя (любого), а потом на свою через навлинк в навбаре, у тебя ничего не получится

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

      @@Rakhmankuloff-c7b А как быть тогда, не подскажешь,

  • @denkodatskyi3381
    @denkodatskyi3381 5 лет назад

    Самые лучшие уроки по React & Redux!
    просто ЛУЧШИЙ !!!
    withRouter, props.match.params

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

    Огромнейшее спасибо за курс!! Ты помогаешь реализовать мою цель, быть разработчиком!!

  • @tret40
    @tret40 4 года назад

    withRouter, первый раз слышу, я вообще много чего на этом канале первый раз слышу так как начал с нуля

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

    Перед просмотром не знал что такое withRouter, спасибо огромное за твой труд! Лайк сразу зашел) Смотрю дальше!

  • @АлександрТыршу-р5с
    @АлександрТыршу-р5с 5 лет назад +5

    Можно переделать в конце ролика проверку userId на более локаничную. Вместо
    let userId = this.props.match.params.userId;
    if (!userId) {
    userId = 2;
    }
    написать
    const userId = this.props.match.params.userId || 2;
    А ещё есть баг - если перейти на чей-то профайл, а потом в навбаре клацнуть профайл, чтобы посмотреть свой профайл, то перерисовка не произойдёт и ничего не поменяется=(

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

      есть решение исправить баг?

    • @ЮрийО-ч3ю
      @ЮрийО-ч3ю Год назад

      @@nikitagaponov тоже вижу это баг, не перерисовывается при переходе по ссылкам из NavBar'а. Решения нет

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

    Самое лучшее видео на курсе. Ради этого и проходил этот курс. Боже, это так прикольно. хочу пересматривать этот видос раз 100 и повторять withRouter. уиии

  • @АнастасияВорон-б7ю
    @АнастасияВорон-б7ю 3 года назад +1

    connect (прокидывает данные из store) => withRouter (прокидывает данные из URL) => ContainerComponent (делаем ajax-запросы, прокидываем props в презентационную компоненту) => презентационная компонента

  • @amanzholumurzakov565
    @amanzholumurzakov565 4 года назад

    Не представляю, откуда столько энергии и мотивации делать такие крутые уроки еще и бесплатно, но я все же решился пойти на платное, инкубатор это просто лучшее место для обучения!

    • @ITKAMASUTRA
      @ITKAMASUTRA  4 года назад

      Ее, бро! Доведём тебя до конца!

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

    *--2021--*
    В ноябре 21 react-router-dom обновил версию на 6, если Вы, как и я, не хотите откатываться на 5, то вот моё решение:
    Файл App.js:
    *читать ниже в ответе, ютуб блочит*

    • @ДенисУалинов
      @ДенисУалинов 2 года назад

      @@in_the_fox_fur а почему connect два раза?

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

      @@ДенисУалинов соррян, убрала. Connect должен быть один )
      Комментарий постоянно блочило, я не сразу поняла, что дело в ссылке, в попытках его всё же оставить, не заметила, что строчка задублировалась

  • @ctumyji9737
    @ctumyji9737 4 года назад +2

    Спасибо Димыч! Все понял, пойду на практике отработаю и дальше полечу!
    React JS - withRouter, props.match.params

  • @pannihto7588
    @pannihto7588 4 года назад

    Про withRouter не знал, а потому с большим удовольствием посмотрю

  • @Nikitosss91
    @Nikitosss91 5 лет назад +3

    Когда выучу реакт - открою свою школу " Путь Шаолиня" .

    • @victorpidorovic3314
      @victorpidorovic3314 4 года назад

      сморозил конечно знатно, петросян v.2

    • @olegzidane7099
      @olegzidane7099 4 года назад

      не остри аж так)

  • @Kamil-en8sr
    @Kamil-en8sr 4 года назад

    оказывается WithRouter это просто ! :) лучший курс по React + Redux

  • @poonk-xi4nn
    @poonk-xi4nn 3 года назад +1

    Димыч спасибо , круто обьясняешь . Я сижу кушаю яблочко после удаленки и понимаю ,что ты круче наших учетелей раз в 100.

  • @АлександрСмирнов-в2ю
    @АлександрСмирнов-в2ю 4 года назад +1

    не знал раньше про withRouter(), теперь знаю, предельно понятно объясняешь, спасибо за это!)

  • @fargutvest
    @fargutvest 4 года назад

    withRouter удобная штука, не знал, оказывается можно не прокидывать props.match через все дерево компонентов, спасибо!

  • @konstantinkuksov914
    @konstantinkuksov914 4 года назад

    Димыч, не знаю пока что такое withRouter, так что побежал снимать видео с паузы и досматривать!

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

    Я не знал что такое With router до просмотре этого видео. Спасибо Димыч за твои уроки

  • @ВикторКулагин-ь2у
    @ВикторКулагин-ь2у 4 года назад

    про withRouter, я не знал! Первый раз так плотно учу React.js, хотя самим программированием далеко не первый раз сталкиваюсь.

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

    Thanks!
    The best lessons of React & Redux!!!
    React , Redux, State, Store, Dispatch ,Connect, Action, Route, Reducer, Props

  • @sulmom78
    @sulmom78 4 года назад +1

    withRouter, react, redux, курс просто бомба. Димыч лучший! Лучший курс по React Redux на планете

  • @nachalponimat
    @nachalponimat 4 года назад

    Спасибо!
    withRouter, props.match.params

  • @ДмитроПасічнюк
    @ДмитроПасічнюк 3 года назад +1

    К сожалению, не знал, но уверен, что после просмотра смогу так мастерски им пользоваться как Димыч катаной)

  • @ВладиславаВолкова-и7ы

    После часа гугления в инете, попадается как раз твое видео, и сразу то что нужно. Спасибо!

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

    #withRouter #reactjs #react #js
    Ууууу, чуть голова не лопнула от огромного количества повторений компонента в компоненте которая в компоненте , и та тоже в компоненте , и компонента в еще одной компоненте. Звучит это все как то так: «На море на океане есть остров, на том острове дуб стоит, под дубом сундук зарыт, в сундуке - заяц, в зайце - утка, в утке - яйцо, в яйце - игла, - познаешь React»

  • @КонстантинМ-с3с
    @КонстантинМ-с3с 4 года назад +1

    withRouter что? не, не слышал, сейчас Димыч расскажет и буду знать! Спасибо за офигенный курс! :)

  • @aidosbatyrkulov3272
    @aidosbatyrkulov3272 4 года назад

    Все супер идем дальше #react #redux #withRouter

  • @ИванТолкачев-щ3м
    @ИванТолкачев-щ3м 4 года назад

    Учусь у Димыча в инкубаторе. Шикарная команда у него, супер атмосфера!! +1000 лайков)))

  • @ЭльнараГайнанова
    @ЭльнараГайнанова 4 года назад +1

    Ура, 60 уроков позади 💪Спасибо! React, redux, withRouter

  • @dmitrymarokhonov2635
    @dmitrymarokhonov2635 4 года назад +1

    Спасибо Дима, что объяснил про match и params

  • @АндрейПодколзин-ъ2х

    супер,теперь знаю что такое withRouter

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

    спасибо Димычу за курс и ребятам, которые пишут апдейты по обновленному стеку!

  • @Kostiantyn_S.
    @Kostiantyn_S. 3 года назад +1

    Шаолинем можешь ты не быть, но самураем стать обязан!

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

    Огромное спасибо,что повторяешь,повторяешь и повторяешь.это очень помогает

  • @amiraimurzayev8234
    @amiraimurzayev8234 4 года назад

    HOC, WithRouter, connect, props.match.params, лучшие объяснения React!
    Лучший сенсей, наставник, учитель и просто отличный мужик!

  • @taras8068
    @taras8068 4 года назад +1

    Много полезного узнал про hoc whithRouter) Thanks! 💪 👍🏼

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

    До этого видео не знала, что такое withRouter

  • @СтаниславСкоробогатов-п2ч

    WithRouer зашел проще , чем connect . Спасибо , двигаемся дальше

  • @Alex-bn7zr
    @Alex-bn7zr 4 года назад

    Лучший курс Ract, Redux, HOC, Connect, WithRouter
    Димыч, спасибо за труд!

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

    Не знала, что такое withRouter. Дима, спасибо за урок!!! #hoc #withRouter #reactjs

  • @KirillPetechkin
    @KirillPetechkin 4 года назад

    Не знал, что такое withRouter. Смотрим видос, и летим дальше)

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

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

  • @mardershadow3965
    @mardershadow3965 Год назад +2

    Важно прочитать: на севодня withRouter - удален из react-router-dom (начиная из 6 версии библиотеки). Штоби получать информацию из поисковой строки нужно юзать хук useParams, но у меня возникали проблеми в сочетании з класовой компонентой. Итог : если ти смотриш етот тутор очень в будущем тебе нужно загуглить што такое: useEffect(он используетса вместо componentDidMount в стрелочник компонентах) и useParams(по сути функция которая возвращает параметр поисковой строки)

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

      Создал поверх классовой контейнерную компоненту, прописал хук и все работает, спасибо)