Измените один из параметров в url с реакции-маршрутизатором v4 - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть такой путь

/cities/:cityGuid/responses/:responseGuid

Когда пользователь меняет город, мне нужно заменить :cityGuid. Для смены города использовался компонент NavLink.

<NavLink to="current url with changed cityGuid" text="Moscow" />

Для получения текущего URL мне нужно использовать location.pathname и заменить cityGuid в этой строке.

current url: /cities/londonCityGuid/responses/abc1
user change city
next url is: /cities/moscowCityGuid/responses/abc1

Каков наилучший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Если вы хотите сохранить полное местоположение и изменить некоторые параметры, если вы находитесь во вложенном маршруте, вы можете сделать это с помощью pathToRegexp, url и path из match и pathname из location.

const ParamLink = ({
  children,
  match: { url = '', path = '', params: currentParams = {} } = {},
  location: { pathname = '' } = {},
  params = {}
}) => {
  const urlPartToInsert = pathToRegexp.compile(path)({
    ...currentParams,
    ...params
  });
  const to = pathname.replace(url, urlPartToInsert);
  return <Link to={to}>{children}</Link>;
};

export default ParamLink;
0 голосов
/ 11 сентября 2018
import pathToRegexp from 'path-to-regexp';

const { match: { path, params } } = this.props;

pathToRegexp.compile(path)({
  ...params,
  cityGuid: 'newCityGuid',
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...