Спасибо за обзор, Александр, ждём продолжения!) Очень актуально, так как раз неделю назад начал новую аппликуху делать и увидел что прилетел react-router-dom 6.6.1. До этого на 5м было несколько проектов. Так что сейчас тоже разбираюсь с новшествами) Инициализация роута стала больше напоминать подход в Angular. Также появилась сущность Outlet, что тоже намекает) В общем, там много интересного:)
всё что нужно знать о миграции с 5 на 6 версию на проекте который в разработке 2+ года и работает 4 человека. это 50 часов миграции. я 10 раз подумаю брать ли этот роутер в будущие проекты
Давно уже юзаю 6ую версию и в ней прекрасно описывается через JSX без createBrowserRouter, вместо switch используется routes ну и правила другие описания роута, куда адекватнее чем а 5ой версии. Очень классно как всё работает описал в своем ролике давным давно academind, Советую посмотреть. Описание роутов в виде конфига на мой взгляд дермо и 3 шага назад, было выпилено в 4ой версии, а 3ей так и писали. Никогда такого не было и вот опять. Вся еще ботва в том, что реакт-роутер стал слишком много на себя брать, так вот основной фичей 6.4 стала возможность префечв данных. Т.е роутер теперь еще и на дуде игрец.
В районе 6.3 разрабы библиотеки выпилили у себя компонент Prompt, пришлось искать варианты написания своего аналога с использованием уже depricated navigator.block. Но в 6.4 они пошли дальше и выпилили navigator хотелось бы увидеть твою реализацию Propmt
На самом деле все просто. Создаем свою копию BrowserRouter с собственным инстансом navigator и экспортируем его. Далее все как и раньше, используем navigator.block где нужно без привязки к всяким UNSAFE_ импортам.
Аааа, вы просто супер! Субтитры очень-очень четкие, просто никак не могу нарадоваться, вы помните еще мой коммент! Огромное спасибо, прошу очень так же продолжить в дальнейшем! Огромное спасибо!
Все для вас) я пишу сценарий текстом для каждого выпуска) поэтому загружаю просто свой текст и нажимаю кнопку синхронизировать с видео) так что это не сложно) если вас интересует какой-то специальный выпуск, где плохие субтитры, вы пишите я обновлю субтитры, у меня есть текста всех выпусков)
Использую в своём пет-проекте их новый подход в их же фреймворке Remix run (видимо там и зародилась их идея с таким подходом) и мне очень понравилось. Теперь почти на 100% можно избавится от стейт менеджера. Данные с лоадера страницы можно получить на любой вложенности. Работа с формами тоже крутая, теперь можно использовать обычный html стандарт для форм. Конечно тут вопрос что лучше, куча джс и нагрузка памяти клиента или зависимость от интернет соединения для запросов. Вечный холивар В целом идея ок. Меня радует что в теории при таком подходе можно разгрузить зоопарк библиотек на проекте и получить крутой DX для себя и лёгкий клиент для пользователя
А может знаете, где они описывали мотивацию создания loader и других вещей. Так как у меня пока немного противоречивые ощущения) А нагуглить нигде не могу :( Видемо надо Remix либу изучать)
Спасибо за видео! Используем в проекте версию 6.4.1. Пока не юзали action, loader etc. В остальном полет нормальный, проблем не доставляет. По личным ощущениям, код стал больее выразительный в сравнении с 5 версией
Использую только jsx/tsx нотации. повсеместно юзаю. Так глубоко не копаю как ты - "некогда точить пилу, нужно пилить дрова". Спасибо тебе - после каждого твоего видео иду разбираться исходники.
с errorElements у нас на проектах возникли проблемы. Мы использовали ErrorBoundry для оборачивания компонентов, чтобы красиво показывать ошибки только для тех компонентов с которыми эти ошибки связаны. С 6.4 роутера errorElements просто перехватывает все ошибки, то есть пользователь видит отдельную страницу на которой красуется сообщение об ошибке, не очень хорошо. Но поскольку не критично пока не разбирались как это поведение отключить или настроить
Эту библиотеку колбасит из стороны в сторону с каждым обновлением. Многие программисты перестали её использовать. Я для небольших проектов использую wouter.
На данный момент версия react-router 6.8.2 и в офф доке в туториале показывается всё через createBrowserRouter(). Скажите, возможно ли писать роутинги на данной версии библиотеки как раньше через , , ? И где смотреть доку и офф туториал? У них на сайте можно выбрать доку либо текущей версии 6.8.2 либо 4-5 Мне просто нужно в доку и туториал подсматривать, потому что я не писал на версиях до 6.4, а на проекте сейчас не хотим использовать нововведения с createBrowserRouter() с ее лоудерами/экшенами
Привет :) Технически возможно все написать через BrowserRouter, но я подозреваю, что это будет тот еще гемор. Вероятно самый простой путь сейчас это использовать createBrowserRouter, но не использовать некоторые фичи типа Form, loader и т.д.
@@denistatarinov5395 Сложность их самая большая как их продавать) сайт то ли заказывать где то с платежками, то ли что) пока идей нет даже как это лучше замутить) Если есть опыт или идеи, буду рад выслушать)
@@it-sin9k была задача сделать в header Хлебные крошки для навигации между страницами ( Каталог / Машина / Audi) по клику можно было вернуться на нужную нам старницу
@@kimanowka т.е. вы всю хлебную крошку хранили так же и в url? в каком либо виде? а не handle это значит вы передавали снаружи. А откуда вы брали инфу?
@@it-sin9k а потом в самом компоненте header брали эти crumbs согласно доки и получали нужный нам массив из этих вложенных страниц, мы тоже переделывали из 6 на 6,4 и некоторая вложенность на страницах была неправильная, но если сделать правильную вложенность в самом createBrowserRouter , то на выходе мы получаем массив из вложееных элементов, которые передавали в crumbs
сижу на 6.3, пока полет нормальный, смысла переходить на новые пока не вижу, раньше на 5 версии очень нравилось, что можно было делать path с регулярными выражениями, жаль, что в новых версиях это выпилили
Привет :) Уже был подобный вопрос под этим или вторым видео, где вы тоже комментарий оставили. Идея в том что Header должен быть внутри роутера const router = createBrowserRouter([{ element: path: '/', children: [{ element: index: true, }, { element: path: '/cars' }]) const LayoutWithHeader = () => { return (
насчет классовых компонентов, они предлагают делать HOC в виде функционального компонента, который достанет все из ххуков и пробросит в сам компонент :)
У меня есть вопрос, может быть кто-то знает. У меня есть есть определённый роутер который я создал через createRoutesFromElements В конечном итоге я получаю Но мне необходимо сделать чтобы была примерно следующая структура:
Нужно сделать так, чтобы TopMenu и LeftMenu имели доступ к контексту Роутера, иначе я не могу использовать И получаю ошибку вроде "Error: useHref() may be used only in the context of a component" Если кто знает как решить данную проблему, помогите, пожалуйста)
@@it-sin9k я жду активно. свичнулся с ангуляра в реакт изза рынка, плююсь до сих пор, но радуюсь что ангуляр и сюда доходит, правда с опозданием на 5-10 лет
Проп index - это пометка для дочернего роута, что тот будет отрисован по дефолту в Outlet при условиях: - Урл совпадает с родительским - Урл не совпадает ни с одним другим дочерним роутом (помимо помеченного index) Проп hasErrorBoundary не совсем понятен - в коде это просто флаг, указывающий, что errorElement проброшен и он устанавливается автоматически, походу забыли выпилить, либо оставили для каких то стремных кейсов, но в бою реальных юзкейсов не вижу. Проп handle - да, похоже используется для проброса каких то данных, но смысл не ясен, т.к. есть loader, но обнаружена следующая улика из исходников хука useMatches /** * Returns the active route matches, useful for accessing loaderData for * parent/child routes or the route "handle" property */ Проверять лень - юзкейса опять же нет
Вообще на бою новый роутер неплох, наконец-то можно нормально пользовать его из обычных TS-классов, а лоадеры вообще красота. Немного обернул стандартные хуки добавив чутка функционала и удобства - в целом доволен. Доку бы получше и ответ на вопрос, какого хера в реакте более-менее приличный роутер появился только сейчас...
@@it-sin9k в общем девизы нового роутера: - Лоудеры и экшоны мана небесная, теперь очень похоже на флоу react-query (хотя последний я недолюбливаю) - Хуки матчинга и работы с урл-параметрами - очень неплохо - Съезжаем с JSX в пользу TS, ибо декларативность !== удобство в таких фундаментальных вещах (но можно было бы и побольше API открыть для управления из TS-кода для любителей экстрима) - Очень рекомендую присмотреть утилиту generatePath для навигации со сменой path-параметров, можно достаточно легко и красиво дополнить стандартные хуки - Ну а сами стандартные хуки более-менее описаны и полезны. По итогу получился стандартный роутер уровня Angular или Vue 3-4 летней давности XD
вот реально почти ничего не рассказано, а столько полезного сообщено. при таких изменениях наверное все же правильнее было уже новую версию выпускать, например 7. чтобы было очевидно что оно совсем другое. не вышло бы это видео и не увидел его и в ужасе пытался бы с новой версией работать как с известной 6й, но безуспешно. полезность этого короткого видео все же не менее чем других более длинных и подробных выпусков. такое тоже нужно рассказывать менее внимательным и не читающим постоянно все что выходит новое как я.
Я думаю они не перешли к 7-ой версии по причине, что они не ломали обратную совместимость. Т.е. с 6.6 версией можно работать как с 6.0 и все будет ок :) так что не все так плохо)
@@it-sin9k не ведь если установлена версия 6.1 и ее обновить до 6.6 придется переделывать как минимум роуты. да, это проще и в меньшем объеме чем у других библиотек, но все равно переделывать и заметно. или я не внимательно смотрел видео?
React-router всегда был ужасен. Никогда не понимал его популярности. JSX-роутинг крайне неудачная идея, всегда лучше единая точка истины в виде конфига. В версии 6.0 наконец-то догадались до идеи транзитивности роутов, что смена роута не должна быть синхронным процессом, на который реагируют сами компоненты, а сам роутер должен запускать эти эффекты и управлять ими. Но все равно сделали, извините, через жопу. Где состояние транзакции? Где удобное управление им? Раньше была отличная библиотека router5, но, к сожалению, уже умерла. Сейчас вроде неплохо выглядит react-location от создателя react-query. Надеюсь, React-router поскорее умрет. Раковая опухоль в мире реакт разработки, как и redux.
@@it-sin9k Спасибо за вопрос) Прям любимого нет, но сейчас выбрал бы react + apollo или react-query для сетевого кеша, react-location в качестве роутера и в зависимости от проекта recoil или zustand в качестве стейт-менеджера. Если стейт-менеджер будет использоваться очень активно (а с библиотекой сетевого кеша он почти и не требуется) и нужна высокая производительность, выбрал бы recoil, иначе zustand.
Реакт роутер вообще конченная библиотека для роутинга. Мне нужно было на большом проекте перевести с 5 версии на 6. Я сделал подготовку по гайду, и начал обновлять на 6 версию. Такой взрывной рост ошибкой и кривого поведения я еще не встречал. Поэтому теперь команду ремикса я вижу как мошенников отмывающих венчурные деньги Если хотите библиотеку для роутинга смотрите в сторону tanstack/router
Ого React-router СНОВА все переосмыслили и теперь уже точно поняли как оно должно выглядеть
И снова получилось говно
ждем 7 версию :) будет один хук который принимает массив из компонента и урла
Разборы актуальны, пили еще! Спасибо за видео!
разбор актуальный, жду продолжения!👍
Отличный контент, как обычно. Спасибо большое
Всё супер, очень жду продолжения )
Отличный контент, как обычно. Спасибо большое! разбор актуальный, жду продолжения!
лучший видос про современный router, спасибо
Да конечно хотим дальнейший разбор
Спасибо за обзор, Александр, ждём продолжения!) Очень актуально, так как раз неделю назад начал новую аппликуху делать и увидел что прилетел react-router-dom 6.6.1. До этого на 5м было несколько проектов. Так что сейчас тоже разбираюсь с новшествами) Инициализация роута стала больше напоминать подход в Angular. Также появилась сущность Outlet, что тоже намекает) В общем, там много интересного:)
Да-да, я тоже как раз очень погрузился во все это) я так понял, чтобы понять, почему в эту сторону вообще все движется, нужно еще Remix изучать)
пакет очень широко используемый, поэтому дальнейший разбор весьма-весьма полезен.Как всегда спасибо за ролик!
Очень актуальны и полезны такие разборы. Спасибо за труды)
на днях выйдет следующее видео в этот же плейлист)
всё что нужно знать о миграции с 5 на 6 версию на проекте который в разработке 2+ года и работает 4 человека.
это 50 часов миграции.
я 10 раз подумаю брать ли этот роутер в будущие проекты
Когда сидишь на нексте и уже забыл про эту библиотку
Кстати, а зачем менять-то было? 🤔Все уже и так привыкли, да и удобно было
Супер круто, спасибо!
Давно уже юзаю 6ую версию и в ней прекрасно описывается через JSX без createBrowserRouter, вместо switch используется routes ну и правила другие описания роута, куда адекватнее чем а 5ой версии. Очень классно как всё работает описал в своем ролике давным давно academind, Советую посмотреть. Описание роутов в виде конфига на мой взгляд дермо и 3 шага назад, было выпилено в 4ой версии, а 3ей так и писали. Никогда такого не было и вот опять. Вся еще ботва в том, что реакт-роутер стал слишком много на себя брать, так вот основной фичей 6.4 стала возможность префечв данных. Т.е роутер теперь еще и на дуде игрец.
Пока у меня схожие ощущения)
Согласен. Такое ощущение, что Router стремится стать отдельным фреймворком JS)))
Комментарий в поддержку! Жду нового выпуска по обновленному роутеру!
В районе 6.3 разрабы библиотеки выпилили у себя компонент Prompt, пришлось искать варианты написания своего аналога с использованием уже depricated navigator.block. Но в 6.4 они пошли дальше и выпилили navigator
хотелось бы увидеть твою реализацию Propmt
Да, надо будет подумать)
значит мне еще повезло, что хоть навигатор был 😅
Посмотри в сторону UNSAFE_NavigationContext
@@khmilevoi смущает UNSAFE, который в будущем может разделить судьбу navigator
На самом деле все просто. Создаем свою копию BrowserRouter с собственным инстансом navigator и экспортируем его. Далее все как и раньше, используем navigator.block где нужно без привязки к всяким UNSAFE_ импортам.
Отличный ролик, не знаю как, но дал мне понимание, что я на правильном пути
а ещё они выпилили поиск по документации. Потому что настоящий фронтендщик должен знать документацию всех используемых библиотек на память
Ага, я тоже уже все прочел, чтобы на следующее видео нормально насобирать инфу)
Спасибо! В ожидании продолжения
Аааа, вы просто супер! Субтитры очень-очень четкие, просто никак не могу нарадоваться, вы помните еще мой коммент! Огромное спасибо, прошу очень так же продолжить в дальнейшем! Огромное спасибо!
Все для вас) я пишу сценарий текстом для каждого выпуска) поэтому загружаю просто свой текст и нажимаю кнопку синхронизировать с видео) так что это не сложно) если вас интересует какой-то специальный выпуск, где плохие субтитры, вы пишите я обновлю субтитры, у меня есть текста всех выпусков)
Как раз перед твоим видео начал изучать доку новой версии) поэтому жду продолжения обязательно!
уже следующее видео активно в печи готовится)
Спасибо очень интересно, react router 6.4
Ждём продолжения 🙌
Использую в своём пет-проекте их новый подход в их же фреймворке Remix run (видимо там и зародилась их идея с таким подходом) и мне очень понравилось. Теперь почти на 100% можно избавится от стейт менеджера. Данные с лоадера страницы можно получить на любой вложенности. Работа с формами тоже крутая, теперь можно использовать обычный html стандарт для форм. Конечно тут вопрос что лучше, куча джс и нагрузка памяти клиента или зависимость от интернет соединения для запросов. Вечный холивар
В целом идея ок. Меня радует что в теории при таком подходе можно разгрузить зоопарк библиотек на проекте и получить крутой DX для себя и лёгкий клиент для пользователя
А может знаете, где они описывали мотивацию создания loader и других вещей. Так как у меня пока немного противоречивые ощущения) А нагуглить нигде не могу :( Видемо надо Remix либу изучать)
Как я понял они взяли такой подход с react-location
@@antonnizhegorodov9465 Надо будет посмотреть)
@@it-sin9k Да, у Ремикса на сайте в блоге есть статья Remix vs Next. Там в одном из разделов есть аргументация в пользу выбора подхода с формами.
@@izzy7541 обязательно поищу эту статью
Отличный контент спасибо
TanStack Router - ждём))
Ура, спасибо тебе за контент! Вместе с твоими видео я стану хорошим спецом
Спасибо за видео! Используем в проекте версию 6.4.1. Пока не юзали action, loader etc. В остальном полет нормальный, проблем не доставляет. По личным ощущениям, код стал больее выразительный в сравнении с 5 версией
6-ая версия мне тоже понравилась) без новых фишек 6.4 версии)
Спасибо в очередной раз за полезные видео
Использую только jsx/tsx нотации. повсеместно юзаю. Так глубоко не копаю как ты - "некогда точить пилу, нужно пилить дрова".
Спасибо тебе - после каждого твоего видео иду разбираться исходники.
спасибо за добрые слова) в следующих видео пройдусь по основным фичам) чтобы время тебе не тратить)
разбор интересен! ждемс =) каждый раз, с роутером, как. в первый
ага) полностью согласен)
с errorElements у нас на проектах возникли проблемы. Мы использовали ErrorBoundry для оборачивания компонентов, чтобы красиво показывать ошибки только для тех компонентов с которыми эти ошибки связаны. С 6.4 роутера errorElements просто перехватывает все ошибки, то есть пользователь видит отдельную страницу на которой красуется сообщение об ошибке, не очень хорошо. Но поскольку не критично пока не разбирались как это поведение отключить или настроить
Хороший поинт) постараюсь осветить его в видео про errorElements, там есть про что рассказать) Спасибо за комментарий!
спасибо!👏
Эту библиотеку колбасит из стороны в сторону с каждым обновлением. Многие программисты перестали её использовать. Я для небольших проектов использую wouter.
Я уже сам задумываюсь отказаться от нее)
На данный момент версия react-router 6.8.2 и в офф доке в туториале показывается всё через createBrowserRouter().
Скажите, возможно ли писать роутинги на данной версии библиотеки как раньше через , , ? И где смотреть доку и офф туториал? У них на сайте можно выбрать доку либо текущей версии 6.8.2 либо 4-5
Мне просто нужно в доку и туториал подсматривать, потому что я не писал на версиях до 6.4, а на проекте сейчас не хотим использовать нововведения с createBrowserRouter() с ее лоудерами/экшенами
Привет :)
Технически возможно все написать через BrowserRouter, но я подозреваю, что это будет тот еще гемор. Вероятно самый простой путь сейчас это использовать createBrowserRouter, но не использовать некоторые фичи типа Form, loader и т.д.
Как всегда круто и актуально! Спасибо синяк, когда уже мерч будет ??
Какой мерч хотелось бы?)
@@it-sin9k Худи)) майки))
@@denistatarinov5395 Сложность их самая большая как их продавать) сайт то ли заказывать где то с платежками, то ли что) пока идей нет даже как это лучше замутить) Если есть опыт или идеи, буду рад выслушать)
Использовал handle для отображения хлебных крошек в header, сработало очень круто)
А можно по подробнее?)
@@it-sin9k была задача сделать в header Хлебные крошки для навигации между страницами ( Каталог / Машина / Audi) по клику можно было вернуться на нужную нам старницу
@@it-sin9k а из loader можно забирать params со страницы, что тоже нужно было в хлебных крошках
@@kimanowka т.е. вы всю хлебную крошку хранили так же и в url? в каком либо виде? а не handle это значит вы передавали снаружи. А откуда вы брали инфу?
@@it-sin9k а потом в самом компоненте header брали эти crumbs согласно доки и получали нужный нам массив из этих вложенных страниц, мы тоже переделывали из 6 на 6,4 и некоторая вложенность на страницах была неправильная, но если сделать правильную вложенность в самом createBrowserRouter , то на выходе мы получаем массив из вложееных элементов, которые передавали в crumbs
Привет, было бы круто пройтись по всем фичам, спасибо ☺️
Активно готовится новое видео)
Top content ❤
сижу на 6.3, пока полет нормальный, смысла переходить на новые пока не вижу, раньше на 5 версии очень нравилось, что можно было делать path с регулярными выражениями, жаль, что в новых версиях это выпилили
У них в доке кстати расписывалось, как они ожидают работу с регулярками. Читал на днях)
@@it-sin9kо, это уже интересно, надо будет глянуть, спасибо
Возник вопрос, решение на который я пока не нашёл,
когда мы делаем вот такую структуру компонентов, то в хедере и футоре мы не можем использовать компонет Link, как это победить?
Привет :)
Уже был подобный вопрос под этим или вторым видео, где вы тоже комментарий оставили. Идея в том что Header должен быть внутри роутера
const router = createBrowserRouter([{
element:
path: '/',
children: [{
element:
index: true,
}, {
element:
path: '/cars'
}])
const LayoutWithHeader = () => {
return (
)
}
@@it-sin9k Спасибо большое!
Актуально)
Почему в element нельзя передать JSX, а именно ReactNode?
Саш, спасибо))
errorElement не только 404 перехватывает, если выкинуть ошибку throw во вложенном компоненте, тоже отобразится наш not found.
Все верно) я решил, чуть позже раскрыть все прелести этого свойства) спасибо за комментарий!
createBrowserRouter это вариация роутера, применим больше для загрузки или отправки данных с помощью форм.
жду продолжения
здравствуйте. Покажите как теперь передавать параметры в роутах и как их принимать в классовых компонентах. Спасибо.
насчет классовых компонентов, они предлагают делать HOC в виде функционального компонента, который достанет все из ххуков и пробросит в сам компонент :)
@@it-sin9k Как по мне костыльно получается. И четается плохо, но просто в реализации
@@zluka4636 согласен, не хотят они о классах больше думать))
В доке есть хорошие примеры по использованию новых фич. Например рекомендуют использовать handle для построения breadcrumb.
Вы уже не первый кто говорить про breadcrumbs) пока не видел этот пример)
🔥🔥🔥
Жду новые ролики по роутеру
я посмотрела свой и оказывается у меня версия 6.11.2. С тех пор прошло 4 месяца
Хоть использовал react один раз 2 года назад, твои видео всё равно смотрю...
Спасибо за поддержку!)
У меня есть вопрос, может быть кто-то знает.
У меня есть есть определённый роутер который я создал через createRoutesFromElements
В конечном итоге я получаю
Но мне необходимо сделать чтобы была примерно следующая структура:
Нужно сделать так, чтобы TopMenu и LeftMenu имели доступ к контексту Роутера, иначе я не могу использовать
И получаю ошибку вроде "Error: useHref() may be used only in the context of a component"
Если кто знает как решить данную проблему, помогите, пожалуйста)
Кажется разобрался: нужно использовать Outlet
Привет :)
Такого рода вещи делаются с помощью вложенных роутов.
const router = createBrowserRouter([{
element: // ниже описал компонент
path: '/'
children: [{
element:
index: true,
}, {
element:
path: 'cars'
}]
}]
const Layout = () => {
return (
)}
@@it-sin9k Спасибо!
я бы хотел узнать больше
🎉
С беглого взгляда стало похоже на TanStack Router. React Router слишком часто все меняют, хорошо что последнее время использую роутинг от next.js
Тоже устал от breaking changes :)
больше такого контента!
компонент Redirect удалили. мнн пришлось написать его
о кстати не обратил на это внимание о_О
похож на на роуты ангулара
У себя перешел га новую версию.
Использовал loader и заменил в компонентах useState() и useEffect(). Очень удобно.
Использовали defer в loader?
Возможно как-то задиспатчить санку в loader-функции?
@@alexvoid8717 только если явно вытащить инстанс стора и сделать store.dispatch(...). Боюсь, что это не очень хорошо работает в паре с Redux
Хорошо, что я на ангуляре
я до последнего буду сидеть на 6.0 удобно и понятно
обратная совместимость с 6.0 не сломана) вы просто можете не использовать новые фичи :)
Так и до ангуляре дойдем, ждемс
ага)) сам пока не знаю как на это реагировать)
@@it-sin9k я жду активно. свичнулся с ангуляра в реакт изза рынка, плююсь до сих пор, но радуюсь что ангуляр и сюда доходит, правда с опозданием на 5-10 лет
@@Maximurz1k ))) я свичнулся еще с 1 ангуляра на реакт много лет назад) и надеялся, что больше его не увижу))))
все видео актуальны, ньюсмэйкер)
Проп index - это пометка для дочернего роута, что тот будет отрисован по дефолту в Outlet при условиях:
- Урл совпадает с родительским
- Урл не совпадает ни с одним другим дочерним роутом (помимо помеченного index)
Проп hasErrorBoundary не совсем понятен - в коде это просто флаг, указывающий, что errorElement проброшен и он устанавливается автоматически, походу забыли выпилить, либо оставили для каких то стремных кейсов, но в бою реальных юзкейсов не вижу.
Проп handle - да, похоже используется для проброса каких то данных, но смысл не ясен, т.к. есть loader, но обнаружена следующая улика из исходников хука useMatches
/**
* Returns the active route matches, useful for accessing loaderData for
* parent/child routes or the route "handle" property
*/
Проверять лень - юзкейса опять же нет
Вообще на бою новый роутер неплох, наконец-то можно нормально пользовать его из обычных TS-классов, а лоадеры вообще красота. Немного обернул стандартные хуки добавив чутка функционала и удобства - в целом доволен. Доку бы получше и ответ на вопрос, какого хера в реакте более-менее приличный роутер появился только сейчас...
я как раз вчера в доке дочитал до примера с index)
@@it-sin9k в общем девизы нового роутера:
- Лоудеры и экшоны мана небесная, теперь очень похоже на флоу react-query (хотя последний я недолюбливаю)
- Хуки матчинга и работы с урл-параметрами - очень неплохо
- Съезжаем с JSX в пользу TS, ибо декларативность !== удобство в таких фундаментальных вещах (но можно было бы и побольше API открыть для управления из TS-кода для любителей экстрима)
- Очень рекомендую присмотреть утилиту generatePath для навигации со сменой path-параметров, можно достаточно легко и красиво дополнить стандартные хуки
- Ну а сами стандартные хуки более-менее описаны и полезны.
По итогу получился стандартный роутер уровня Angular или Vue 3-4 летней давности XD
@@SanoTheLitch Мне кажется они там и вдохновляются))
@@it-sin9k ну а чего бы нет...осталось в реакт притащить адекватный шаблонизатор и будет сказка XD
Контент хорош, а сам роутер еще то говно
Не опять, а снова
вот реально почти ничего не рассказано, а столько полезного сообщено. при таких изменениях наверное все же правильнее было уже новую версию выпускать, например 7. чтобы было очевидно что оно совсем другое. не вышло бы это видео и не увидел его и в ужасе пытался бы с новой версией работать как с известной 6й, но безуспешно. полезность этого короткого видео все же не менее чем других более длинных и подробных выпусков. такое тоже нужно рассказывать менее внимательным и не читающим постоянно все что выходит новое как я.
Я думаю они не перешли к 7-ой версии по причине, что они не ломали обратную совместимость. Т.е. с 6.6 версией можно работать как с 6.0 и все будет ок :) так что не все так плохо)
@@it-sin9k не ведь если установлена версия 6.1 и ее обновить до 6.6 придется переделывать как минимум роуты. да, это проще и в меньшем объеме чем у других библиотек, но все равно переделывать и заметно. или я не внимательно смотрел видео?
@@romanmed9035 хз, надо смотреть исходники
Я всё ещё в ожидании видева, что передаётся по ссылке, а что по значению...
Не вопрос,
th-cam.com/video/-hBJz2PPIVE/w-d-xo.html
@@it-sin9k ну и халтура от тебя, жаль что ты так и не разобрался что передаётся по ссылке, а что по значению.
Надеюсь, что это такой рофл
@@zhenia14 чел, ты...
На реальном проекте, решил перейти на новую версию роутера, в итоге нифига не понял и откатился обратно)
да, тут очень много всего))
React-router всегда был ужасен. Никогда не понимал его популярности. JSX-роутинг крайне неудачная идея, всегда лучше единая точка истины в виде конфига.
В версии 6.0 наконец-то догадались до идеи транзитивности роутов, что смена роута не должна быть синхронным процессом, на который реагируют сами компоненты, а сам роутер должен запускать эти эффекты и управлять ими. Но все равно сделали, извините, через жопу. Где состояние транзакции? Где удобное управление им?
Раньше была отличная библиотека router5, но, к сожалению, уже умерла. Сейчас вроде неплохо выглядит react-location от создателя react-query.
Надеюсь, React-router поскорее умрет. Раковая опухоль в мире реакт разработки, как и redux.
Если не секрет, какой ваш любимый стек?)
@@it-sin9k Спасибо за вопрос) Прям любимого нет, но сейчас выбрал бы react + apollo или react-query для сетевого кеша, react-location в качестве роутера и в зависимости от проекта recoil или zustand в качестве стейт-менеджера. Если стейт-менеджер будет использоваться очень активно (а с библиотекой сетевого кеша он почти и не требуется) и нужна высокая производительность, выбрал бы recoil, иначе zustand.
@@EnjoyerOfBepis На многое из вашего списка планирую в будущем еще сделать свои обзоры и поделиться мнением по этому поводу)
@@it-sin9k о, с удовольствием бы посмотрел ваш обзор, у вас лучший русскоязычный канал по фронтенду.
@@EnjoyerOfBepis Спасибо :)
Постараюсь добраться обязательно)
Реакт роутер вообще конченная библиотека для роутинга. Мне нужно было на большом проекте перевести с 5 версии на 6. Я сделал подготовку по гайду, и начал обновлять на 6 версию. Такой взрывной рост ошибкой и кривого поведения я еще не встречал. Поэтому теперь команду ремикса я вижу как мошенников отмывающих венчурные деньги
Если хотите библиотеку для роутинга смотрите в сторону tanstack/router
А не подскажите причины необходимости миграции на 6 версию?
@@RealToptuK приложение требовало новые фичи для управления экранами