Передайте Props в this.props.children

Я новичок в React, и у меня возникла проблема с передачей пользовательских свойств в this.props.children. Я пробовал React.cloneElement и вижу опору, когда делаю console.info в классе, который я создал, но он теряется, когда я пытаюсь пропустить его. Я не знаю, может быть, React-Router-Dom что-то делает, чтобы пропустить опору. любая помощь будет принята с благодарностью.

Я начал этот проект, используя Create-React-App из GitHub. У меня установлено следующее программное обеспечение.

"react": "^16.3.2",
"react-dom": "^16.3.2",
"react-redux": "^5.0.6",
"react-router-dom": "^4.2.2",
"react-scripts": "1.1.4",
"redux": "^3.7.2",

в App.js

render() {
 return (
  <Provider store = {store}>
    <BrowserRouter> 
    <Switch>
      <Route exact path = "/" component = {LoginPage} />
      <Route path = "/Login" component = {LoginPage} />
      <RootPage>
        <Route path = "/TestPage" component = {testPage} />
      </RootPage> 
    </Switch>
   </BrowserRouter>
  </Provider>
 );
}

в RootPage.js (родительский)

render() {
    const { classes, theme, children } = this.props;

    var childrenWithProps = React.Children.map(children, child => React.cloneElement(child, { doSomething: "Test String" }));

    console.info(childrenWithProps)
    return (
        <div>
           {childrenWithProps}
        </div>
    );
}

С console.info выше в RootPage.js я вижу опору «doSomething».

в TestPage.js (Ребенок)

render(){
    const { classes, theme } = this.props;

    console.info(this.props)

    return (
        <div> 
        </div>
    );
}

в приведенном выше console.info в TestPage.js я не вижу пропуска "doSomething", который я передал.

Спасибо за любую помощь.

Поведение ключевого слова "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) для оценки ваших знаний,...
1
0
1 242
1

Ответы 1

Распространите props на компонент TestPage из компонента Route.

<RootPage>
  <Route path = "/TestPage" render = {props => <TestPage {...props} /> }/>
</RootPage>

Спасибо за быстрый ответ, я попробовал то, что у вас есть, и мне удалось передать реквизиты из App.js, но мне действительно нужно передать их из RootPage.js. На корневой странице есть функции, которые должна вызывать TestPage. Может быть, я что-то упускаю, есть ли способ сделать это, используя то, что у вас есть выше?

user1184205 15.05.2018 06:48

Я думаю, вы упускаете мою мысль. Я отредактировал ответ. Проверить еще раз.

Ritwick Dey 15.05.2018 07:06

Я новичок в React, не говоря уже о веб-разработчиках. Я понимаю, что если бы у меня были функции и состояние в моем файле App.js, где объявлены маршруты, я мог бы использовать то, что есть у вас. Я просто не могу понять, как с помощью приведенного выше кода запустить функцию, которая находится в RootPage.js, из TestPage.js. RootPage будет там, где мой заголовок и боковая панель навигации, поэтому в нем необходимо вызывать функции. Если я чего-то упускаю, не могли бы вы указать мне правильное направление, чтобы узнать это? Стоит ли переместить эти функции в app.js?

user1184205 15.05.2018 07:28

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