以下の値(<ArticleList instance>.props.articles
)は、HomePage
(this.props.articles
)の小道に結合されています。ReactJSプロップバインディングはどのように機能しますか?
ReactJSは、動的ルックアップを許可する代わりに、オブジェクト参照の設定として「this.props.articles」を維持しなければならないので、this.props.articles
のオブジェクトIDは、undefined
かもしれませんか、それは変更される場合があります。
これは間違いありませんか?
class HomePage extends React.PureComponent {
render() {
return <ArticleList articles={this.props.articles} />
}
}
function ArticleList({articles}) {
if(!articles) return <div>There are no articles!</div>;
return <div>{ articles.map(a => <Article value={a} />) }</div>;
}
編集:私はundefined
のためのケースをカバーするために、コードを編集しました。私の質問は残っています。修正再表示するには
:
this.props.articles
は、プロパティの値を取得するために、JavaScript式のように見えます。
しかし、それは質問に記載された理由ではありません(あなたは定義されていません)。
これは、代わりにJSXが解析する方法を知っている特殊なJSX構文ですか?
ほぼ正しいです。これを考えてみましょう: 'this.props.articles'が偽であれば、' ArticleList'コンポーネントから何が返ってきますか?あなたがしてはならないものを 'マップする 'ことを試みているので、それは壊れませんか? – Patel
例えば、 'this.props.articles'が' undefined'だった場合、 'undefined'に' map'を実行しようとすると "undefined is not object"というエラーが出ます。それが 'false'だった場合、' undefined is a function 'のようなものが得られます。 'false'はボックス化され、' map'メソッドはありません。 – Ben
JSXのJavaScriptが中括弧で囲まれている必要があるため、ニットをピッキングするとエラーが発生すると思います。 return