Метод router.resolve используется для получения
информации о маршруте без фактической навигации по нему. Это особенно
полезно, когда требуется программно вычислить URL, проверить
соответствие маршруту или получить объект маршрута для дальнейшей
обработки.
const resolved = router.resolve(location, currentLocation, append);
Параметры:
location — объект или строка, указывающая маршрут,
который нужно разрешить. Может быть строкой URL, объектом с полями
{ name, params, query, hash } или массивом.currentLocation — текущий маршрут, относительно
которого будет разрешён новый путь. Используется для вычисления
относительных маршрутов. По умолчанию берется текущий маршрут.append — логическое значение, которое указывает,
следует ли добавлять путь к текущему маршруту (актуально для вложенных
маршрутов).Метод возвращает объект с ключевыми свойствами:
href — строка URL, которая будет использоваться для
навигации. Поддерживает как абсолютные, так и относительные пути.route — объект маршрута, аналогичный объекту,
возвращаемому router.currentRoute. Включает
path, name, params,
query, hash, matched.location — нормализованный объект
location, который можно передать в другие методы навигации
(router.push или router.replace).Разрешение строки URL:
const resolved = router.resolve('/about');
console.log(resolved.href); // '/about'
console.log(resolved.route.path); // '/about'
Разрешение маршрута с именем и параметрами:
const resolved = router.resolve({
name: 'user',
params: { id: 42 }
});
console.log(resolved.href); // '/user/42'
console.log(resolved.route.params); // { id: 42 }
Использование с query-параметрами и хэшем:
const resolved = router.resolve({
path: '/search',
query: { q: 'vue' },
hash: '#top'
});
console.log(resolved.href); // '/search?q=vue#top'
console.log(resolved.route.query); // { q: 'vue' }
console.log(resolved.route.hash); // '#top'
Относительные маршруты Если
currentLocation задан, router.resolve
корректно вычисляет относительные пути относительно этого маршрута. Это
позволяет динамически создавать ссылки внутри вложенных маршрутов без
ручного сложения строк.
Совместимость с объектами и строками Метод одинаково корректно обрабатывает как строки URL, так и объекты маршрутов с параметрами, query и hash.
Не вызывает переход В отличие от
router.push или router.replace,
router.resolve не изменяет текущий маршрут. Оно лишь
вычисляет итоговый путь и объект маршрута.
Поддержка вложенных маршрутов При использовании
вложенных маршрутов метод учитывает конфигурацию children и
правильно формирует matched массив, который отражает все
уровни маршрута.
router.resolve позволяет создавать корректные
href для <a> тегов, не вызывая
перехода.router.push.const links = [
{ name: 'home' },
{ name: 'user', params: { id: 1 } },
{ path: '/about' }
];
const hrefs = links.map(link => router.resolve(link).href);
// ['/','/user/1','/about']
router.resolve предоставляет точное соответствие
маршруту, включая нормализацию параметров и вычисление абсолютного пути.
Этот метод делает работу с маршрутизацией гибкой и безопасной, особенно
в крупных приложениях с динамическими и вложенными маршрутами.