私は現在、以下のサーバー側レンダリング ロジック (reactjs + nodejs +redux を使用) を使用して、最初にデータを同期的に取得し、ストアの初期状態として設定しています。
fetchInitialData.js
export function fetchInitialData(q,callback){
const url='http://....'
axios.get(url)
.then((response)=>{
callback((response.data));
}).catch((error)=> {
console.log(error)
})
}
データを非同期にフェッチし、出力をロードして、コールバックを使用してページが最初にロードされたときに保存します。
handleRender(req, res){
fetchInitialData(q,apiResult => {
const data=apiResult;
const results ={data,fetched:true,fetching:false,queryValue:q}
const store = configureStore(results, reduxRouterMiddleware);
....
const html = renderToString(component);
res.status(200);
res.send(html);
})
}
最初のページの読み込み時に 4 ~ 5 回の API 呼び出しを行う必要があるため、ページの読み込み時に複数の呼び出しを行う簡単な方法があるかどうかを確認することを考えました。
初期状態をロードするために、API 呼び出しを連鎖させ、異なる API 呼び出しからの応答を手動でマージして送り返す必要がありますか?
更新 1: axios.all アプローチの使用を考えています。それが理想的なアプローチかどうか教えてもらえますか?