react-маршрутизатор генерирует путь() с дополнительными параметрами пути

#javascript #reactjs #react-router #react-router-dom

Вопрос:

У меня такой путь to/:param/(optional)?/:optionalParam? , когда я использую generatePath() , как:

 generatePath('to/:param/(alsoTo)?/:optionalParam?', {
  param: 'abc',
  optionalParam: 'xyz',
});
 

Я получаю что-то вроде to/abc/xyz вместо to/abc/alsoTo/xyz (первое промахивается alsoTo на пути).

Что я должен сделать, чтобы получить to/abc/alsoTo/xyz /alsoTo/ сгенерированный путь?

Я использую react-маршрутизатор v5.

Ответ №1:

Не создавайте alsoTo параметр , когда вы передаете его generatePath , т. е.

 generatePath('to/:param/alsoTo/:optionalParam?', {
  param: 'abc',
  optionalParam: 'xyz',
})
 

Конечно, если вы хотите условно добавить alsoTo , передайте это как параметр

 generatePath('to/:param/:alsoTo(alsoTo)?/:optionalParam?', {
  param: 'abc',
  optionalParam: 'xyz',
  alsoTo: someValueForAlsoTo,
});
 

Значение alsoTo в объекте params должно быть 'alsoTo' | undefined равно , иначе вы получите сообщение об ошибке.