Как мне добавить маршрут с помощью реактивного маршрутизатора?
Допустим, текущий маршрут /page1/page2, и я хочу проложить маршрут до /page1/page2/next-page
сначала я получаю маршрутизатор
const router = useHistory();
Когда я использую push вот так
router.push("next-page");
Он направляется к /page1/next-page.
Когда я использую, добавляю / вот так
router.push("/next-page");
Он направляется к /next-page
Я также пробовал что-то вроде этого
router.push(`${router.location.pathname}/next-page`)
Но проблема в том, что когда я сейчас нахожусь в /page1/page2/, я оказываюсь в /page1/page2//next-page с двумя //.
Есть ли хороший способ решить эту проблему без необходимости писать полный маршрут, например router.push("/page1/page2/next-page")?





Если вы сделаете router.push("/page1/page2/next-page"), это должно сработать. Думаю нужно указывать полный путь, не вижу в этом ничего плохого
если вы хотите добавить что-то к существующему пути, вы сможете сделать что-то вроде
const location = useLocation()
const currentPath = location.pathname // to get current route
router.push(`${currentPath}/next-page`)
Это sudo-код, поэтому вам может потребоваться немного изменить его для правильного синтаксиса.
В итоге я определил функцию, которая удаляет / из URL-адреса, если есть
export const removeSlashSuffix = (input) => {
if (input.charAt(input.length - 1) === "/") {
return input.substr(0, input.length - 1)
} else {
return input;
}
}
а затем маршрут, как это
router.push(`${removeSlashSuffix(router.location.pathname)}/nest-page`)
Таким образом, у меня не возникает проблем с маршрутами, которые разрешаются в URL-адресе с // в нем.
Это несколько хакерское решение, и я бы хотел, чтобы react-router-dom поддерживал его из коробки, но, похоже, это не так.
Это именно то, чего я не хочу делать. Я не хочу указывать полный путь, потому что в некоторых ситуациях я не знаю полного пути, я просто хочу добавить что-то к существующему пути