React Hooks: Шаблон параметра в nestedRoute не заменяется на параметр

Проблема: при переходе по URL /edit/:bankCode/general-info или /edit/:bankCode, переданный параметр не заменяет :bankCode. Т.е. вместо /edit/VCS или /edit/VCS/general-info я получаю /edit/:bankCode и /edit/:bankCodeS/general-info соответственно.

Компонент управления роутингом:

import React, {
  ForwardedRef,
  forwardRef,
  ForwardRefExoticComponent,
  PropsWithRef,
} from 'react';
import { Route, Switch } from 'react-router-dom';
import { IRoute } from '../types/route';
import Redirect from './Redirect';

type TFormComponent = ForwardRefExoticComponent<PropsWithRef<IRoutingProps>>;

interface IRoutingProps {
  routes: IRoute[];
  path?: string;
  defaultRoute?: string;
  ref?: ForwardedRef<HTMLElement>;
  [key: string]: any;
}

const Routing = forwardRef(({ routes, path, defaultRoute, ...rest }, ref) => {
  const isDefaultRouteAvailable =
    path &&
    defaultRoute &&
    routes.findIndex((route: IRoute) => route.path === defaultRoute) !== -1;

  return (
    <Switch>
      {routes.map((route, i) => {
        console.log(i, route.path, route.exact);
        return (
          <Route key={i} path={route.path} exact={route.exact}>
            <route.component
              name={route.name}
              path={route.path}
              routes={route.routes}
              defaultPath={route.defaultPath}
              ref={ref}
              {...rest}
            />
          </Route>
        );
      })}

      {isDefaultRouteAvailable ? (
        <Redirect from={path} to={defaultRoute} />
      ) : null}
    </Switch>
  );
}) as TFormComponent;

export default Routing;

Объект роутов:

import GeneralInfo from '../components/steps/GeneralInfo';
import BankList from '../pages/BankList';
import Editing from '../pages/Editing';
import { IRoute } from '../types/route';

export const routes: IRoute[] = [
  {
    path: '/',
    name: 'Bank List',
    component: BankList,
    exact: true,
  },
  {
    path: '/edit/:bankcode',
    defaultPath: '/edit/:bankcode/general-info',
    name: 'Edit a new bank',
    component: Editing,
    routes: [
      {
        path: '/edit/:bankcode/general-info',
        name: 'General info',
        component: GeneralInfo,
        exact: true,
      },
    ],
  },
];

Вызов роутинга по клику из компонента BankList происходит по клику на Link компонент: (Объект данных для передачи в компонент таблицы)

const data = useMemo(() => {
    if (!banks) return [];

    return banks.map(bank => {
      return {
        bankCode: { content: bank.bankCode },
        bankName: { content: bank.bankName },
        modifiedDate: { content: bank.modifiedDate || bank.createdDate },
        edit: {
          renderCell: () => (
            <Link to={`/edit/${bank.bankCode}/general-info`}>
              <EditIcon fontSize="small" color="primary" />
            </Link>
          ),
        },
      };
    });
  }, [banks]);

Ответы (0 шт):