React Router - Создание панировочных сухарей

Я пытаюсь сделать компонент Breadcrumbs с помощью react-router-dom, и у меня есть несколько вопросов

Скажем, мне дали маршрут, который выглядит так:

breadcrumbRoutes: [
    {
      path: '/devicePolicies',
      exact: true,
      name: "Device Policies",
      main: () => <h2>Device Policies View</h2>
    },
    {
      path: '/devicePolicies/controlPanel',
      exact: true,
      name: "Control Panel",
      main: () => <h2>Control Panel View</h2>
    },
    {
      path: '/devicePolicies/controlPanel/settings',
      exact: true,
      name: "Settings",
      main: () => <h2>Settings View</h2>
    }
  ]

В настоящее время мой компонент Breadcrumbs будет визуализировать его так, чтобы он выглядел как этот Device Policies/Control Panel/Settings. Однако он неправильно отображает правильный компонент, связанный с самым последним путем /devicePolicies/controlPanel/settings. Например, вместо визуализации компонента settings он отображает компонент Home.

Breadcrumbs.js

Class Breadcrumbs extend Component

insertBreadcrumbs() {
var routes = this.props.routes;

    return (
      <div style = {{display: 'flex'}}>
          <ul className = "breadcrumb">
            { this.insertListElement(routes) }
          </ul>
          {routes.map((route) => (
             <Route
                  key = {route.path}
                  path = {route.path}
                  exact = {route.exact}
                  component = {route.main}
             />
          ))}
     </div>
    );
}
render() {
    return (
        <Router>
              { this.insertBreadcrumbs() }
        </Router>
    );
}

App.js

<Breadcrumbs 
        name = "breadcrumbRoutes"
        routes = {this.state.breadcrumbRoutes}
        onChange = {this.handleChangeEvent}
 />

Как я могу сделать так, чтобы загруженное представление всегда было последним компонентом моего пути? В этом примере я хочу загрузить компонент settings

Ваша помощь очень ценится!

Я немного запутался в вашей реализации. Можем ли мы увидеть больше кода?

mattdevio 19.09.2018 23:57

@mattdevio Да, я добавил еще немного своего кода. Надеюсь, это прояснит мой вопрос

Tim 20.09.2018 00:29

@Tim что делает функция insertListElement? Мы можем это увидеть?

tgreen 20.09.2018 00:54
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
3
122
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Я понял, в чем была моя проблема. Оказывается, я неправильно тестировал поведение. Я пытался заставить свой маршрутизатор установить местоположение на settings вместо того, чтобы делать Link с to = "devicePolicies/controlPanel/settings. Вставив этот Link, я смог правильно установить местоположение моего маршрутизатора на settings, который затем правильно отображает соответствующий компонент. Спасибо всем за ваш вклад!

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