2017-06-01 11 views
-2

私はReactを新しくしました。私はthis codeに一部を理解していないよ:react.jsの小道具を宣言する方法

var HelloMessage = React.createClass({ 
    render: function() { 
     return <h2>{this.props.message}</h2>; 
    } 
}); 

var TextBox = React.createClass({ 
    getInitialState: function() { 
     return { isEditing: false } 
    }, 
    update: function() { 
     // Where is props.update defined? // 
     this.props.update(this.refs.messageTextBox.value); 
     this.setState(
      { 
       isEditing: false 
      }); 
    }, 
    edit: function() { 
     this.setState({ isEditing: true}); 
    }, 

はコードでは、私がupdateためprops宣言を見つけることができません。しかし、コードを見ると、TextBoxコンポーネントのプロパティとして「更新」が表示されるはずです。

どのレンダリング方法でも、this.props.updateの明示的な宣言が表示されません。

どのようにprops.updateが定義されていますか?だから、HelloReactコンポーネントrenderメソッドの内部で、いくつかのTextBoxコンポーネントがそうのように返され

+0

コンポーネントの値(JSXとして)はコンポーネントのキーと値です(リアクタ要素として) – sudhnk

+0

あなたの応答で属性の起点を把握できました。 – CodeZilla

+0

こんにちは!あなたのポストを編集して読みやすくして、必要なヘルプを得ることができます。あなたの例からいくつかのコードを追加しました。表示されているエラーとともに、コードの[最小動作例](https://stackoverflow.com/help/mcve)を常に含める必要があります。私はあなたがReactの内部の働きについてもっと知りたいと思っていますが、私が言及したような参考文献を投稿しなければ、助けを得ることはまずありません。がんばろう! –

答えて

1

... 
<TextBox label='First Name' update={this.update.bind(null, 'firstName')}> 
... 

今ここで何が起こっているのかはHelloReactこのTextBoxコンポーネントにupdateという名前の小道具を渡しているということです。つまり、TextBoxのコンポーネントの中で私はthis.props.updateでこの小道具を使用することができます。親から受け継がれたすべての小道具には、子供のthis.propsが住んでいます。この具体的なケースでは、labelupdateを渡しています。

TextBoxコンポーネントの中には、this.props.labelthis.props.updateでこれらの小道具に直感的にアクセスできます。それはupdateと呼ばれるプライベートメソッドを定義します。このコンポーネントの内部では、これはあなたがより良いフォーマットで掲載スニペットからのコードです:

... 
update: function() { 
    this.props.update(this.refs.messageTextBox.value); 
    this.setState({ isEditing: false }); 
}, 
... 

そこでここでは、親から受け継がれた小道具であるthis.props.updateを呼んでいますHelloReactにあります。私たちがプライベートメソッドでこの呼び出しをラップする理由は、this.props.update()を呼び出すことができることの上に、何か他のこともしたいからです。この場合、TextBoxコンポーネントの状態も更新する必要があるからです。

この説明が十分明確であることを希望します。私は非常に驚くべき公式の文書からReactについて読むことを提案したり、多くのチュートリアルをオンラインで見ることができます。これらはReactの重要な概念であり、Reactで開発できるようにするには、それらを正しく理解する必要があります。

​​をお読みになりたい場合は、オフィシャルドキュメントから来て、小道具に関するものです。

+0

ありがとう、あなたは本当に明確にしました。謝辞 – CodeZilla

関連する問題