これは私の現在のシナリオです。私のホームページはHTTPリクエストを使って複数のコンポーネントを構成しています。すべてのコンポーネントがHTTPリクエストを完了した場合にのみページを表示できますか?ページを表示する前にすべてのコンポーネントのロードを完了してください - React JS
ありがとうございます!
P.S.私はWebアプリをどのように開発するのか、私の計画段階に入ってからまだ表示するコードはありません。
これは私の現在のシナリオです。私のホームページはHTTPリクエストを使って複数のコンポーネントを構成しています。すべてのコンポーネントがHTTPリクエストを完了した場合にのみページを表示できますか?ページを表示する前にすべてのコンポーネントのロードを完了してください - React JS
ありがとうございます!
P.S.私はWebアプリをどのように開発するのか、私の計画段階に入ってからまだ表示するコードはありません。
あなたのアプリはまだコード化されていないので、より良いコンポーネント構造を採用することができます。 これは私が見てやり遂げたアプローチです。
1.最初の場所で必要ありませんグローバルローダー -
あなたの各コンポーネントは、以下に示すようにアプリのシェルarchitechtureの使用と同様に、データがロードされる前でも、レンダリング処理することができます。 Facebookのポストの ロードシェルは
コード
class Post extends React.Component {
render() {
return this.props.isLoading ? (
<div className="post">...</div>
) : (
<div className="post-shell"></div>
);
}
}
2.グローバル・ローダー
コードのようになります
class App extends React.Component {
render() {
return this.props.isLoading ? (
<RootComponent {...props}>
) : (
<Loader />
);
}
}
Loaderコンポーネントは、絶対位置のローディングアイコンがある
/コンテンツ。 RootComponentは、すべての小道具に必要なデータがあるように、データが読み込まれるときにのみマウントされます。
多くのプロジェクトは、コンポーネントが対応するシェルで記述されていないため、前者には贅沢はありません。しかし、あなたは時間によって制約されていないからです。最初のアプローチは最高のUXを提供します。
私は1番と一緒に行くべきだと思います。お返事ありがとう! –
'this.props.isLoading'条件をチェックするには? @Sagi_Avinash_Varma –
私は通常、読み込み画面としてビューポート全体を占めるdivを持っています。それは絶対的な位置付けを持ち、ページの残りの部分より高いZインデックスを持ちます。 httpコールが終了すると、最後のコールバックでdivを非表示にすることができます –
しかし、私の問題は、すべての(複数の)httpコールが終了した場合にどのように検出できますか?ページにhttpコールが1つしかない場合でも、私の場合はホームページが各コンポーネントのhttp呼び出しで複数のコンポーネントに分割されているので、これを行うことができます。私はそれをどうやってやるのか考えない。 –
[observer pattern](https://en.wikipedia.org/wiki/Observer_pattern)を使用できます。基本的に、http応答が終了するたびに通知されるオブジェクトが1つあります。 (リストまたは単純なカウントに基づいて)十分な時間が通知されると、ページが表示されます –