複数のGET URLを一度に取得し、取得したJSONデータをReact DOM要素に入れる方法を知りたいです。
ここに私のコードがあります:
fetch("http://localhost:3000/items/get")
.then(function(response){
response.json().then(
function(data){
ReactDOM.render(
<Test items={data}/>,
document.getElementById('overview')
);}
);
})
.catch(function(err){console.log(err);});
ただし、サーバーから追加のJSONデータを取得し、渡されたこれらすべてのJSONデータでReactDOMをレンダリングしたいと思います。例えば:
ReactDOM.render(
<Test items={data} contactlist={data2} itemgroup={data3}/>,
document.getElementById('overview')
);
これは可能ですか?そうでない場合、複数のJSONデータをレンダリングReactDOM要素にフェッチする他のソリューションは何ですか?
JSON形式の応答が必要だったので、自分で少しコードを追加しました
Promise.all([
fetch(url1).then(value => value.json()),
fetch(url2).then(value => value.json())
])
.then((value) => {
console.log(value)
//json response
})
.catch((err) => {
console.log(err);
});
Promise.all
の実装を使用します( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all )で複数のリクエストを行うしばらくしてから、後でデータを使用して必要なことを行います。
Promise.all([
fetch("http://localhost:3000/items/get1"),
fetch("http://localhost:3000/items/get2"),
fetch("http://localhost:3000/items/get3")
]).then(allResponses => {
const response1 = allResponses[0]
const response2 = allResponses[1]
const response3 = allResponses[2]
...
})
リクエストが互いに依存している場合(最初のリクエストでパラメーターを取得し、2番目のリクエストで使用する場合)、これらをレスポンス関数内にネストする必要があります。
これらのリクエストを互いに独立して実行できる場合は実行できますが、Reactコンポーネントをレンダリングする前に3つ(またはそれ以上)で同期する必要があります。