Пользуюсь react-router-domv4.3.1.
For example: I have the following URL
http://localhost:3000/url1/url2/url3
Мне нужно заменить только последний маршрут в URL: /url3 → /mynewroute3
Как это сделать с история?
программно





someMethod = () => {
const { history } = this.props;
history.push(`/url1/url2/url_new`); // change url3 to "url_new"
}
this.props должен содержать history, если вы использовали withRouter в корневом компоненте.
При выполнении history.push(...) маршрутизатор улавливает изменение и действует в соответствии с ним.
location.pathname.split('/').slice(0,-1).join('/') + '/newPath'
location.pathname.replace(/[^/]*$/, newPath)
Вышеупомянутое берет текущий путь расположения окна, вырезает часть после последнего / (включая) и добавляет новую строку (новый путь)
Идеально! Спасибо!
Я знаю, что этот вопрос задают для React Router v4, но я пытался проделать то же самое с React v5 и нашел этот ответ. Для справки в будущем, в React Router v5 я смог выполнить это, используя следующее:
history.push('./mynewroute3'); // Changes last part
history.push ('./../mynewroute3'); // /url1/url2/url3 => /url1/mynewroute3
Каким должно быть изменение?
<Link>? программно?