#javascript #reactjs #next.js #url-parameters #next-router
Вопрос:
Я создаю страницу поиска, поэтому я использую параметры URL для обработки фильтров, таких как категория продукта и цена.
Это мой текущий метод, который обрабатывает добавление и удаление параметров URL:
function handleCheck(checked: Boolean, id: string, option) {
if (checked) {
if (router.query[id]) {
router.query[id] = `,${option.value}`;
} else {
router.query[id] = `${option.value}`;
}
}
if (!checked) {
if (router.query[id]) {
let param = router.query[id].toString();
let array = param.split(",");
array = array.filter((param) => param !== option.value);
router.query[id] = array;
}
}
router.push(router);
}
Я получаю эти предупреждения каждый раз, когда изменяется URL-адрес:
Комментарии:
1. Это актуально: github.com/vercel/next.js/issues/7962
2. Почему вы передаете сам экземпляр маршрутизатора
router.push
вызову? Его первым аргументом должен быть либо объект string, либо URL.3. Я полагаю, что видел еще один пример здесь, в stack overflow, в котором предлагалось нажать весь объект. Должен ли я попробовать только с маршрутизатором. запрос? @juliomalves
4. Да, в виде строки. Я бы также рекомендовал вам не изменять
router.query
и генерировать новую строку запроса для передачиrouter.push
.