Заменить только последнюю часть пути в URL

Пользуюсь react-router-domv4.3.1.

For example: I have the following URL http://localhost:3000/url1/url2/url3

Мне нужно заменить только последний маршрут в URL: /url3/mynewroute3

Как это сделать с история?

Каким должно быть изменение? <Link>? программно?

vsync 12.11.2018 12:24

программно

D.Mark 12.11.2018 12:24
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
3
2
5 204
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте history.push

someMethod = () => {
  const { history } = this.props;
  history.push(`/url1/url2/url_new`);  // change url3 to "url_new"
}

this.props должен содержать history, если вы использовали withRouter в корневом компоненте.

При выполнении history.push(...) маршрутизатор улавливает изменение и действует в соответствии с ним.

Измените только последнюю часть URL-адреса;

location.pathname.split('/').slice(0,-1).join('/') + '/newPath'

Регулярное выражение:

location.pathname.replace(/[^/]*$/, newPath)

Вышеупомянутое берет текущий путь расположения окна, вырезает часть после последнего / (включая) и добавляет новую строку (новый путь)

Идеально! Спасибо!

D.Mark 12.11.2018 12:42

Я знаю, что этот вопрос задают для React Router v4, но я пытался проделать то же самое с React v5 и нашел этот ответ. Для справки в будущем, в React Router v5 я смог выполнить это, используя следующее:

history.push('./mynewroute3'); // Changes last part 

history.push ('./../mynewroute3'); // /url1/url2/url3 => /url1/mynewroute3

Другие вопросы по теме