Передача реквизитов истории динамически созданным маршрутам, завернутым в родительский компонент

как я могу передать историю динамически созданным маршрутам, которые обернут другим компонентом

см. приведенный ниже фрагмент

import React, {Component} from 'react';
import {BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import Loader from './Loader';
import RootComponent from './RootComponent';
import About from './About';
import Contact from './Contact';

class App extends Component{
  state = {
    loaderStatus: false,
    dynamicRoutes: null
  }

  componentWillMount(){
    this.setState({
      loaderStatus: true
    })
  }

  componentDidMount(){
    let routes = () => {
      let accessedRoutes = [{path:'about', component: () => <About />},{path:'contact', component: () => <Contact />}].map(o => {
        return (
          <Route
            exact = {true}
            path = {o.path}
            component = {o.component}
          >
          </Route>
        )
      })
      return accessedRoutes
    }

    setTimeout(() => {
      let output = this.createRoutes(routes)
      this.setState({
        dynamicRoutes: output,
        loaderStatus: false
      })
    }, 4000)
  }

  createRoutes = (routes) => {
    return (
      <RootComponent>
        <Switch>
          {routes}
        </Switch>
      </RootComponent>
    )
  }


  render(){
    return(
    <Fragment>
    {
      this.state.loaderStatus ?
      <Loader />
      :
      <Router>
        {this.state.dynamicRoutes}
      </Router>
    }
    </Fragment>
    )
  }
}

export default App;

// О.js

import React from 'react';

const about = (props) => {
  console.info('props in about', props) // giving empty object
  return (
    <div>About</div>
  )
}

export default about
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Измените структуру accessedRoutes на [{path:'about', component:About}]. теперь вы можете получить доступ к реквизитам маршрутизатора

это сработало для меня. Спасибо за ответ :), но в чем была причина

Learner 30.04.2019 09:27

причина заключалась в том, что вы передавали анонимную функцию для маршрута, когда маршрут запускал любой компонент, который он вызывал, предоставляя функцию компонента с реквизитами маршрута, которые вы не получали и не передавали компоненту «О программе» на своем пути, вы также можете сделать это. [{path:'about', component:( route_props )=> <Abount { ...route_props } /> } ].

Nikhil Senger 07.03.2020 10:54

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