は、私は、次のJSONファイルを持っていたと言います。私の最善の試みは以下の通りです。リアクションを使用してネストされたAPIを呼び出しますか?私が反応使用してそれらに呼び出しを行う方法を知っていただきたいと思い</p> <pre><code>{ "farmer": [ { "crops": "corn" } ], "activities":{ "hobbies": "swimming" }, "name: Todd" } </code></pre> <p>:
componentDidMount: function(){
var selfish = this;
$.get('~~someurl~~', function(data){
selfish.setState(data);
});
},
render: function(){
return (<div>
<p>{this.state.name}</p>
<p>{this.state.activities.hobbies}</p>
<p>{this.state.farmer[0].crops}</p>
</div>)
}
最初に{this.state.name}
が書かれたとおりに実行されるようになります。しかし、React構文を使用して最後の2つを表現する方法については不明です。{this.state.activities.hobbies}
と{this.state.farmer[0].crops}
私は、それぞれの呼び出しで達成しようとしていることを表現してくれるよううまくそれらを書いています。
EDIT:後者の2つの結果に起因する特定のエラーは、それらが未定義であることを示します。
EDIT:空の初期状態を追加して2番目の作業を行いました。
getInitialState: function(){
return {activities: '', farmer: ''}
}
ただし、最後のものは残りますが、それでもエラーが返されます。
{{}}の間のものは、通常のJavaScript(特定の「リアクション構文」はありません)です。 'this.state.activities.hobbies'などは、データが存在する限り動作します。初期レンダリングではデータが存在しないと仮定します。その場合、まず、データが存在しない場合のUIの外観を考える必要があります。データ/プロパティの存在のテストは、通常どおりに動作します。 'this.state.activities && this.state.activities.hobbies'です。それについて具体的なリアクションはありません。 –
次に、私は '{this.state.name} 'と同じように、ページロード中にこれらの呼び出しをロードする方法を知っていると思います。 '{this.state.name} 'はレンダリングするとすぐにロードされるからです。 –
初期レンダリング時に*実行されます。しかし、 'this.state.activities'は初めて存在しないので、エラーが発生します。したがって、値が存在するかどうかを事前にチェックする必要があります。また、チェックに応じて何かをレンダリングするか、コンポーネントにデフォルトの状態を指定する必要があります。空の 'this.state.activities'オブジェクトで置き換えます。発生している問題の簡単な例を以下に示します: 'var state = {}; console.log(state.activities.hobbies); '' state'にはプロパティがないので、これはエラーを投げます。今、初期値を追加するか、ログに記録する前にテストすることができます。 –