Разница между location.pathname и match.url в react-router-dom?

В чем разница между props.location.pathname и props.match.url

в react-router-dom?

Из их ДОКУМЕНТОВ: https://reacttraining.com/react-router/web/api/location

match.url

(string) The matched portion of the URL. Useful for building nested <Link>s

location

A location object to be used for matching children elements instead of the current history location (usually the current browser URL).

До сих пор я видел их только с одинаковыми значениями.

Пример:

Если мой маршрут соответствует этому URL-адресу:

/search/searchValue?category=whatever

И я хочу удалить строки запроса и перейти к:

/search/searchValue

Должен ли я использовать один над другим, или они оба будут работать?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
16
0
7 152
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

location.pathname представляет URL относительно корня.

match.url представляет совпадающая часть URL, так что, возможно, часть location.pathname.

Учитывая эти два компонента:

function Home({match, location}) {
  return (
    <div>
      {match.url}
      <br/>
      {location.pathname}
    </div>
  );
}

function App() {
  return (
    <Router>
      <Route path = "/" component = {Home}/>
    </Router>
  );
}

Если вы идете в /something, то

  • match.url будет / (поскольку совпадающая часть URL — это /)
  • location.pathname будет /что-то (относительный корневой URL)

Вот пример на stackblitz.

В вашем примере это зависит от того, соответствует ли ваш маршрут точному пути или нет (https://reacttraining.com/react-router/web/api/Route/exact-bool).

Если это не так (и вы хотите получить только /search/searchValue), вам следует использовать match.url, потому что location.pathname может быть больше, чем /search/searchValue -> /search/searchValue/something.

Другие вопросы по теме