TanStack Router предоставляет набор мощных утилитарных функций, которые позволяют оптимизировать маршрутизацию, управлять состоянием маршрутов и создавать более предсказуемую навигацию в приложениях на JavaScript и TypeScript. Эти функции выходят за рамки базового определения маршрутов и дают возможность управлять как синхронными, так и асинхронными данными, взаимодействовать с параметрами URL и контролировать поведение переходов между страницами.
useMatch
и работа с активными маршрутамиФункция useMatch используется для получения информации о
текущем активном маршруте и его параметрах. Она возвращает объект с
подробной информацией о маршруте, включая его путь, параметры, состояние
и сопоставленные родительские маршруты.
Пример использования:
import { useMatch } from '@tanstack/router';
const match = useMatch('/users/:userId');
console.log(match.params.userId); // Получение значения параметра userId
Ключевые моменты:
navigate и
программная навигацияУтилита navigate обеспечивает программный переход между
маршрутами. Она поддерживает навигацию с сохранением истории, заменой
текущего состояния и передачей данных через state.
Пример использования:
import { router } from './router';
router.navigate({
to: '/dashboard',
replace: true,
state: { from: 'login' }
});
Особенности:
parsePath и
buildPath для работы с URLЭти функции позволяют преобразовывать строковые пути в объектное
представление и обратно. parsePath разбивает URL на
сегменты, query-параметры и hash, а buildPath собирает URL
из этих данных.
Пример:
import { parsePath, buildPath } from '@tanstack/router';
const parsed = parsePath('/users/123?active=true#section');
console.log(parsed);
// { pathname: '/users/123', search: '?active=true', hash: '#section' }
const url = buildPath({ pathname: '/users/123', search: '?active=true', hash: '#section' });
console.log(url); // '/users/123?active=true#section'
Преимущества:
matchRoute для
условной логикиmatchRoute позволяет проверять соответствие маршрута
конкретному пути. Это полезно для условного рендеринга компонентов или
применения стилей к активным ссылкам.
import { matchRoute } from '@tanstack/router';
const isActive = matchRoute('/users/:userId', '/users/42');
console.log(isActive); // true
Особенности:
useMatch для
построения условных навигационных меню.TanStack Router включает утилиты для управления query-параметрами и состоянием навигации:
useSearchParams – хук для чтения и
обновления query-параметров.useLocation – возвращает объект
текущего местоположения с pathname, search и hash.useRouterState – позволяет сохранять и
читать состояние маршрута между навигациями.Пример обновления query-параметра:
import { useSearchParams } from '@tanstack/router';
const [searchParams, setSearchParams] = useSearchParams();
setSearchParams({ filter: 'active', page: 2 });
Это позволяет изменять параметры URL без перезагрузки страницы, сохраняя текущий контекст приложения.
TanStack Router предоставляет функции для асинхронной загрузки данных перед переходом на маршрут:
loader – функция, выполняемая перед
активацией маршрута для получения данных.defer – позволяет загружать данные
частично и рендерить страницу до завершения всех запросов.Пример с loader:
const userLoader = async ({ params }) => {
const response = await fetch(`/api/users/${params.userId}`);
return response.json();
};
Эти утилиты позволяют строить маршруты с управлением загрузкой данных без лишних побочных эффектов и дублирования логики.
useMatch – получение информации о текущем маршруте и
его параметрах.navigate – программная навигация с поддержкой состояния
и истории.parsePath / buildPath – безопасная работа
с URL.matchRoute – проверка соответствия маршрута.useSearchParams,
useLocation, useRouterState).loader,
defer).Эти утилиты делают TanStack Router гибким инструментом для построения сложной и предсказуемой маршрутизации, обеспечивая удобное взаимодействие с URL, параметрами и состоянием приложения.