Я использую react-router-dom
v4.3.1
.
Например: у меня есть следующий URL-адрес
http://localhost:3000/url1/url2/url3
Мне нужно заменить только последний маршрут в URL: /url3
→ /mynewroute3
Как это сделать с историей?
Я использую react-router-dom
v4.3.1
.
Например: у меня есть следующий 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>
? программно? - person vsync   schedule 12.11.2018