Привет! Добро пожаловать в Руководство автостопного автомата для React Router V4, часть II!
Теперь, когда мы Установите шарик Rolling С нашим первым небольшим приложением давайте сосредоточимся на трех путешествиях: Матч , место нахождения и История Отказ
Что произойдет, если вы попадаете в свой домашний код компонента и поставьте console.log Там, чтобы проверить реквизиты?
Маршрутизатор вводит в свой компонент следующие объекты:
Ух ты! Откуда это пришло? ?
Ну, каждый вид, компонент или все, что завернут маршрутизатором, имеет эти объекты. <Маршрутизатор/> Есть ли работа в качестве компонента более высокого порядка и оборачает ваши компоненты или представления и вводит эти три объекта как реквизит внутри них.
Так … Почему они там и что можно использовать из них? ?
Они будут вашими лучшими друзьями! Поверьте мне! ?
Соответствие
Матч Объект содержит информацию о том, как A <Путь маршрута> соответствует URL.
- Пармы : (Объект), Пары ключа/значения, анализируемые от URL, соответствующие динамическим сегментам пути
- Isexact : (Boolean), правда, если весь URL был сопоставлен (без конечных персонажей)
- путь : (строка), шаблон пути, используемый для совпадения. Полезно для создания вложенных маршрутов . Мы посмотрим на это позже в одном из следующих статей.
- URL : (строка), соответствующая часть URL. Полезно для создания вложенных ссылок.
Так в Главная Компонент у нас есть этот Матч объект:
Isexact правда, потому что весь URL был сопоставлен, Пармы Объект пуст, потому что мы ничего не проходили в него, путь и URL Ключевые значения равны, подтверждающие, что Isexact правда.
Теперь давайте посмотрим на Topiclist Вид :
Ничего нового до сих пор, та же история как в Главная Вид , показывая путь и URL Topiclist Отказ
Но Что если мы посмотрим на TopicDetails ?
Хорошо, что у нас здесь?
Isexact продолжает быть правдой, потому что весь URL был сопоставлен. Пармы Объект приносит Topicid Информация, которая была передана в компонент.
Обратите внимание на то, как Topicid это переменная.
Но где это предполагает Topic1 ценить?
Просто, вы вызываете его в явном пути в Topiclist ссылки Отказ
Проверьте, как мы использовали Матч для Topiclist знать его URL.
Эта ссылка может быть динамический Отказ Позже мы сделаем пример, где вы Ссылка на относительный путь, где вы ранее не знаете, если это Topic1. или Topic3520. .
Но…
В какой ситуации это Isexact ложный?
Ну … позвольте мне дать вам пример:
В этой ситуации мы представили /Helloworldsection в URL-адрес браузера.
Что происходит, это то, что роутер не знает полный путь к Helloworldsection. Так что он направляет вас до тех пор, пока он не знает.
Isexact Показывает ложь, рассказывая вам именно то, что « весь URL URL не совпадал ».
Это очень полезно, так как вы увидите, как только вы начнете делать спа-салоны с RRV4!
Просто чтобы закончить наш подход к Матч Проверь это:
Мы использовали Match.params.topicid Для печати на экране наше название темы.
Это одно из самых распространенных использований для соответствие .
Конечно, он имеет множество приложений. Предположим, нам нужно получить API с этим Topicid Информация. ?
Место нахождения
Расположение Объект представляет, где сейчас приложение, где вы хотите, чтобы он пошел, или даже там, где это было.
Это также найдено на история Но вы не должны использовать это, потому что это смешно.
А Расположение Объект никогда не мутируется, чтобы вы могли использовать его в крючках жизненного цикла, чтобы определить, когда происходит навигация. Это действительно полезно для получения данных или Дом побочные эффекты.
Давайте console.log (местоположение) внутри Главная Вид :
Давайте не будем глубоко погрузиться много и держаться со своей простой функциональностью.
У вас есть Pathname ключ/значение.
Вы можете использовать его, например, чтобы проверить, если Pathname изменилось:
Вы можете или
Вы можете создать пользовательский объект и использовать его
- <Ссылка на = {locationx}/>
- history.push (locationx)
Вы также можете передать его в <Маршрут/> и <Выключатель/> компоненты.
Это помешает им использовать фактическое местоположение в состоянии маршрутизатора. Может быть, вы хотите обмануть компонент для рендера в другом месте, чем реальный?
Достаточно места сейчас …
Давайте перейдем к история !
История
История Объект позволяет управлять и обрабатывать историю браузера внутри ваших представлений или компонентов.
- Длина : (количество), Количество записей в стеке истории
- Действие : (нить), Текущее действие (толчок, замена или поп)
- Расположение : (объект), текущее местоположение
- Push (путь, [состояние]) : (Функция), толкает новую запись на стек истории
- заменить (путь, [состояние]) : (Функция), заменяет текущую запись в стек истории
- Go (n) : (Функция), перемещает указатель в стеке истории по N-запискам
- обратное () : (Функция), эквивалентная пойти (-1)
- goforward () : (Функция,) эквивалент пойти (1)
- Блок (подсказка) : (Функция), предотвращает навигацию
Так что давайте console.log История объект в нашем Главная Вид И посмотрите, что он показывает:
Хорошо, именно то, что мы ожидали.
Это говорит нам, что мы приехали сюда с Толчок Действие, что Длина объекта это 40 (Когда вы перемещаетесь через ваше приложение История Растет в 50 и останавливается там, отбрасывая более старые записи и сохраняя его размер каждый раз, когда приложение уступает другую запись истории в объект).
Это дает нам Расположение Информация.
Опять же История Объект это Musable Отказ Поэтому рекомендуется получить доступ к Расположение от оказывать реквизит Маршрут не из история Отказ
Это обеспечивает правильность ваших предположений о реагированных крючках в жизненным цикле.
Например:
Как правило, вы можете использовать его, чтобы изменить путь URL браузера.
В приведении ниже мы избегаем <Ссылка> и создать кнопку, которая делает историю Push:
Конечно, вы можете использовать его для запуска изменения URL после некоторых данных для получения или побочных эффектов.
Приятно использовать его в середине JSX, где вы не хотите вызывать компоненты. Вы можете просто вернуть А История Push и триггер Маршрутизатор к Обновление URL браузера.
Последний, но тем не менее важный
Я думаю, что к этому времени у вас уже есть хорошая идея о том, как использовать соответствие , место нахождения и История Отказ
Я не имел никаких изменений в нашей исходной котельной, так что не стесняйтесь играть с ним в том же репо поставляется в Часть 1 этого руководства.
05. Библиография
Чтобы сделать эту статью, я использовал документацию React Router Document, которую вы можете найти здесь Отказ
Все остальные сайты, которые я использовал, связаны в документе, чтобы добавить информацию или предоставить контекст к тому, что я пытался вам объяснить.
Эта статья является частью 2 серии, называемого «Руководство автостона для React Router V4»
- Часть I: Grok React Mar Router за 20 минут
- Часть III: рекурсивные пути, до бесконечности и за его пределами!
- Часть IV: Конфигурация маршрута, скрытое значение определения массива конфигурации маршрута
? Большое спасибо!
Оригинал: “https://www.freecodecamp.org/news/hitchhikers-guide-to-react-router-v4-4b12e369d10/”