2016-10-15 10 views
2

Я проверил это linkКак передать реквизит детям React Router?

До сих пор я не мог понять часть handler. Значит, я надеялся на более простой пример?

Вот мой главный родительский компонент:

class appTemplate extends React.Component { 
    render() { 
     return (
      <div> 
       <Header lang={this.props.route.path}/> 
       {this.props.children} 
       <Footer lang={this.props.route.path}/> 
      </div> 
     ); 
    } 
} 

То, что я хочу сделать, это пройти вниз опору this.props.route.path моих дочерних компонентов которых является this.props.children.

Я не очень хорошо знаком со всеми условиями, хотя я уже несколько раз касался Реагирования в течение последних нескольких месяцев.

Приведенный выше пример с надлежащим объяснением будет оценен по достоинству. Благодарю.

+0

этого пример является довольно старым, проверка последних документов .... если вы используете сокращение, чем просто использовать оболочку подключения, это даст вам доступ к местоположению и маршруту в любом месте приложения – abhirathore2006

ответ

5

правильного способ достижения этой цели является использование React.Children.map()

+0

, это работает, спасибо –

+0

Работает и на меня, спасибо. – rorymorris89

0

React имеет функцию cloneElement. Идея заключается в том, чтобы клонировать объект дети, проходя по пути как часть реквизита:

class appTemplate extends React.Component { 
    render() { 
     let children = null; 
     if (this.props.children) { 
      children = React.cloneElement(this.props.children, { 
      path: this.props.route.path 
      }) 
     } 
     return (
      <div> 
       <Header lang={this.props.route.path}/> 
       {children} 
       <Footer lang={this.props.route.path}/> 
      </div> 
     ); 
    } 
} 

Затем вы должны быть в состоянии получить доступ к пути с помощью this.props.path в дочерний элемент, но (от того, что я помню) не изнутри элементов, вложенных в дочерний элемент.

Вы можете прочитать больше о клонировании и передаче значений здесь: https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement

Смежные вопросы