Вопрос с собеседования · Frontend
Как читать параметры пути и строки запроса в React Router?
JuniorReact
Ещё спрашивают так:
- Что такое useParams и useSearchParams?
Коротко
Параметры пути (/orders/:id) читают useParams() — const { id } = useParams(). Параметры строки запроса (?page=2&sort=date) — useSearchParams(): чтение params.get("page") и запись setParams({page: "3"}) меняет URL и перерисовывает компонент. Все значения — строки: числа приводят и проверяют. Компонент должен реагировать на смену параметра без перемонтирования — загрузка данных зависит от id.
- Отсутствующий параметр — undefined или null, нужен запасной вариант
- Пользователь может вписать в URL что угодно — валидировать
- Навигация с параметрами: navigate(
/orders/${id})
А ещё При переходе между /orders/1 и /orders/2 компонент тот же — эффекты зависят от id
Подробно
function Order() {
const { id } = useParams();
const [params, setParams] = useSearchParams();
const tab = params.get("tab") ?? "items";
return <Tabs value={tab} onChange={t => setParams({ tab: t })} orderId={id!} />;
}Что хотят услышать
- useParams и useSearchParams.
- Значения — строки, валидация.
- Реакция на смену параметра.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗useParams возвращает значения нужных типов, например числа, а useSearchParams — объект
- ✗При переходе с /orders/1 на /orders/2 компонент всегда создаётся заново
- ✓Путь — useParams, строка запроса — useSearchParams; значения строковые
- ✗Строку запроса можно читать только вручную через window.location и разбирать регуляркой
Связанные вопросы
Партнёр платформы
Разбор собеседования
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.