В библиотеке React Router хук useResolvedPath
предоставляет способ корректно вычислять абсолютный путь на основе
текущего контекста маршрута. Это особенно полезно при работе с
относительными путями, вложенными маршрутами и динамическими ссылками.
Хук возвращает объект с информацией о разрешённом пути, который можно
использовать для создания ссылок и навигации.
const resolvedPath = useResolvedPath(to);
Параметры:
to — строка или объект, указывающий путь, который
требуется разрешить. Может быть:
"../profile")."/dashboard/settings").{ pathname, search, hash }.Возвращаемое значение:
Хук возвращает объект Location, содержащий поля:
pathname — абсолютный путь после разрешения.search — строка запроса (?query=1).hash — хэш-фрагмент (#section1).state — состояние, если передано через объект
to.import { useResolvedPath, Link } from 'react-router-dom';
function UserProfileLink() {
const resolved = useResolvedPath('../profile');
return (
Ссылка на профиль: {resolved.pathname}
Перейти в профиль
);
}
В данном примере, если компонент находится на маршруте
/dashboard, хук преобразует ../profile в
/profile. Таким образом, useResolvedPath
гарантирует корректное построение абсолютного пути вне зависимости от
вложенности маршрута.
to может быть объектом:
const resolved = useResolvedPath({
pathname: '../settings',
search: '?tab=privacy',
hash: '#security'
});
После разрешения resolved.pathname будет абсолютным
путем, resolved.search сохранит строку запроса, а
resolved.hash — хэш. Это полезно при динамическом
формировании ссылок, где необходимо сохранять все параметры URL.
Link и
NavLinkХук особенно удобен для построения ссылок в компонентах
Link и NavLink:
import { useResolvedPath, NavLink } from 'react-router-dom';
function NavigationItem({ to, label }) {
const resolved = useResolvedPath(to);
return (
isActive ? 'active' : ''}>
{label}
);
}
Даже если to передаётся как относительный путь,
NavLink будет корректно работать с абсолютным значением
resolved.pathname, позволяя правильно подсвечивать активный
маршрут.
useLocation и useNavigateuseLocation возвращает текущий объект маршрута
(pathname, search, hash) без
разрешения относительных путей.useNavigate используется для навигации, а не для
вычисления путей.useResolvedPath решает проблему построения правильного
абсолютного пути на основе текущего контекста маршрута.useResolvedPath особенно полезен в следующих
случаях:
Вложенные маршруты Для компонентов внутри маршрутов с несколькими уровнями вложенности, когда ссылки должны строиться относительно текущего пути.
Динамические ссылки Если путь зависит от пропсов или состояния компонента.
Ссылки с параметрами URL Когда необходимо объединить относительные пути с query-параметрами и hash-фрагментами.
useResolvedPath автоматически обрабатывает:
. — текущая директория... — подняться на один уровень вверх.../. ./ для корректного
навигационного дерева.Пример:
const resolved = useResolvedPath('../. ./reports/2026');
console.log(resolved.pathname);
// Если текущий путь '/dashboard/users', результат будет '/reports/2026'
to относительным или абсолютным.search) и хэш
(hash) при работе с объектами.Link и NavLink.