2017-06-05 7 views
0

私は複数のルートにまたがる複数ページのフォームを持っています。すべてのルートには、APIから共有される同じデータが必要です。私は、APIの応答をngrx/storeの中に格納し、エフェクトを使ってAPI呼び出しをトリガーすることができます。私の質問は、API呼び出しをどこで開始するかについてです。 API呼び出しは、一度ユーザーが認証されたときに行う必要があります。これは、(マルチページフォームの最初の部分がアクセスされる前に)私がヒットした最初のルートで発生します。私が作ってみた2つのオプションがあります。ルート間で共有されたデータでngrxストアを設定する

  1. は、私はちょうど情報私はルートを訪問するたびに要求する必要がありますを意味し、各ルートのコンポーネント内部の効果を発動します。ガードは、ユーザーが認証されていない間はすべてのページにアクセスできないようにします。

  2. 効果の中で認証された成功行動を聞いて、そこでAPIに要求してください。

確かに両方とも完全に受け入れられており、トレードオフがあります。いくつかの意見を得ることはちょうど良いだろう!

答えて

2

ユーザーが認証され、それを使用することが許可されたときに、要求に応じた情報を要求するのが最善の方法です。ガードの内部では、あなたが情報をロードするアクションをディスパッチして、ルートがアクティブになることを通知するためにtrue/of(true)を返す必要があります。このための単純なアプローチは、保護されたルートをアクティブ化しようとするたびに情報要求をトリガーします。

+0

私は2番目のオプションでサイディングしていました。また、データがロードされている間、ガードを使用してルートをアクティブ化する前に待機するか、APIが各ルートコンポーネント内にロードされてスピナーなどを表示しているかどうかを確認することをおすすめしますか? – maddockst

+0

通常は、情報がローディングとしてマークされている間はスピナーを表示します。私の意見では、レンダリングされるコンポーネントが要求される情報を持つ情報との機能/特性/関係に密接に関連しています。 –

+0

私はあなたの意見を見ます。ガイダンスをありがとう! – maddockst

関連する問題