2015-03-14 4 views
3

Будьте терпеливы Я новичок в реактиве.Реагировать, как правильно подобрать родительский реквизит от своих детей.

В этом фрагменте (она не работает) Я хочу,

в CommentForm, чтобы получить значение URL реквизита

из CommentBox.

var CommentBox = React.createClass({ 
    render: function() { 
    return (
     <div className="commentBox"> 
     <h1>Comments</h1> 
     <CommentList /> 
     <CommentForm /> 
     </div> 
    ); 
    } 
}); 

var CommentList = React.createClass({ 
    render: function() { 
    return (
     <div className="commentList"> 
     Hello, world! I am a CommentList. 
     </div> 
    ); 
    } 
}); 

var CommentForm = React.createClass({ 
    render: function() { 
    return (
     <div className="commentForm"> 
     Hello, my test url {this.props.url} !. 
     </div> 
    ); 
    } 
}); 

React.render(
    <CommentBox url="api/comments" />, 
    document.getElementById('content') 
); 

Каков правильный путь?

и почему реквизит недоступен непосредственно от родителя к детям?

ответ

11

Вам необходимо явно передать реквизиты от родителя к дочернему. Изменение render функции CommentBox будет решить эту проблему:

var CommentBox = React.createClass({ 
    render: function() { 
    return (
     <div className="commentBox"> 
     <h1>Comments</h1> 
     <CommentList /> 
     //The next line is where you can pass the URL to the CommentForm 
     <CommentForm url={this.props.url}/> 
     </div> 
    ); 
    } 
}); 

Работа jsfiddle адаптировано из вашего примера: http://jsfiddle.net/kb3gN/10352/

документы говорят, «Для родитель-ребенок связи, просто проходят реквизита.» См http://facebook.github.io/react/tips/communicate-between-components.html

В качестве альтернативы явной передачи реквизита, РЕАКТА недокументированной context особенности ближе к тому, что вы ищете: https://www.tildedave.com/2014/11/15/introduction-to-contexts-in-react-js.html и на дорожной карте 1,0 https://facebook.github.io/react/blog/2014/03/28/the-road-to-1.0.html#context.

Это говорит о том, что прохождение реквизита является нормальным образцом.

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