Вложенные маршруты в REACT ROUTER DOM, обертывание компонентов в маршрутизаторе

У меня есть 2 компонента, я хочу, чтобы один компонент был общим для некоторых маршрутов, а другой - для остальных маршрутов.

В обоих компонентах я использую {props.children} в обоих компонентах для вложенных маршрутов.

МОЙ код:

<Router history = {history}>
  <div className='routeContainer'>
    <Switch>

      <Component1>
        <Route exact path='/' component = {Dashboard} />
        <Route exact path='/abc' component = {ComponentAbc} />
      </Component1>

      <Component2>
        <Route exact path='/def' component = {ComponentDEF} />
        <Route exact path='/xyz' component = {ComponentXYZ} />
      </Component2>
    </Switch>
  </div>
</Router>

В Component1 и Component 2 я использую {this.props.children} как показано ниже:

render () {
 return (
  <div>

      <SideBar />
      <Header />
      {this.props.children} 
  </div>
 )
}

Это не работает, пожалуйста, помогите заставить эту структуру работать.

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

Ответы 1

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

"All children of a <Switch> should be <Route> or <Redirect> elements. Only the first child to match the current location will be rendered." - react-router

Если вам нужен родительский компонент для компонентов маршрута, вы можете выполнить одно из следующих действий:

  1. Обернуть внутри компонентов
  2. Обернуть внутрь RouteProps - компонент

В любом случае вам нужно удалить все, кроме <Routes/> или <Redirects/> внутри <Switch>

Пример альтернативы 2:

<Route exact path='/' component = {()=> (
  <Component1>
    <Dashboard />
  </Component1>  
)} />

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