Маршруты реагирования не отображаются

#reactjs #routes #react-router-dom

#reactjs #маршруты #react-router-dom

Вопрос:

Я работаю над панелью мониторинга, которая имеет боковую панель с разными маршрутами, и я инициализировал их в массив следующим образом:

 const sideBar = [
{
  id: 0,
  name: "Add Company",
  icon: admin_add_company,
  path: `${url}register`,
  exact: true,
  component: () => <div>The 1st component</div>,
},
{
  id: 1,
  name: "Configuration",
  icon: configuration_icon,
  path: `${url}/configuration`,
  exact: false,
  component: () => <div>The 2nd component</div>,
},
{
  id: 2,
  name: "Delivery",
  icon: delivery_admin_icon,
  path: `${url}/delivery`,
  exact: false,
  component: () => <div>The 3rd component</div>,
},
 

];

И я перебираю разные маршруты, чтобы изменить содержимое рядом с боковой панелью в соответствии с выбранным маршрутом, и вот как это реализовано:

   {sideBar.map((route, index) => (
            <Route
              key={index}
              name={route.name}
              path={route.path}
              exact={route.exact}
              url={url}
              component={route.component}
            />
          ))}
 

и вот ссылки, которые представляют все маршруты:

 <Nav defaultActiveKey={`${url}`} className="flex-column">
            <Nav.Link
              eventKey="register-link"
              active={active.register}
              onClick={() => {
                history.push(url);
                toggleLink({ name: "register", value: true });
              }}
            >
              <img src={admin_add_company} />
              <span>Add Company</span>
            </Nav.Link>
            <Nav.Link
              active={active.configuration}
              eventKey="configuration-link"
              onClick={() => {
                history.push(`${url}/configuration`);
                toggleLink({ name: "configuration", value: true });
              }}
            >
              <img src={configuration_icon} />
              <span>Configuration</span>
            </Nav.Link>
            <Nav.Link
              active={active.delivery}
              eventKey="delivery-link"
              onClick={() => {
                history.push(`${url}/delivery`);
                toggleLink({ name: "delivery", value: true });
              }}
            >
              <img src={delivery_admin_icon} />
              <span>Delivery</span>
            </Nav.Link>
            <Nav.Link
              active={active.partners}
              eventKey="partners-link"
              onClick={() => {
                history.push(`${url}/partners`);
                toggleLink({ name: "partners", value: true });
              }}
            >
              <img src={admin_partners} />
              <span>Partners</span>
            </Nav.Link>
        <Nav>
 

Дело в том, что маршруты меняются правильно. Тем не менее, содержимое каждого компонента никогда не изменяется и не отображается. Почему это может произойти? Заранее спасибо.

Комментарии:

1. Вам не хватает / here path: ${url}register , должно быть path: ${url}/register

2. Добавил его, но все еще не работает!!

Ответ №1:

Измените свой Route реквизит: component -> render

Редактировать

Как насчет того, когда вы меняете свой

 <Nav.Link
    active={active.configuration}
    eventKey="configuration-link"
    onClick={() => {
        history.push(`${url}/configuration`);
        toggleLink({ name: "configuration", value: true });
    }}
>
 

Для

 <Nav.Link
    active={active.configuration}
    eventKey="configuration-link"
    onClick={() => {
        toggleLink({ name: "configuration", value: true });
    }}
    to='/configuration'
>
 

Комментарии:

1. О, я предположил, что это то же NavLink самое, что и . Но как насчет того, чтобы указать только указанный путь без URL?

2. Я исправил проблему, поместив весь компонент в тег маршрутизатора. Это сработало таким образом, почему, поскольку у меня уже есть маршрутизатор, обертывающий index.js

3. Я не видел вашего index.js , но обычно это место, где вы визуализируете свой компонент приложения в статический HTML-файл. Поэтому обертывание этого во что-либо не имеет смысла…