NgRxで2回目のデータの読み込みを防ぐにはどうすればよいですか?

イリーナ

私はDOMブロックを持っています:

<div (click)="toggle(block)">
   <div *ngIf="block.opened">
     <div *ngFor="let item of block.items"></div>
   </div>
</div>

[Iディスパッチアクション]をクリックして、サーバーからデータをロードし、このデータをブロックに表示します。

  toggle(block: RegistryGroup) {
    this.store.dispatch(RegistryActions.ToggleRegistryBlockAction(block));
    this.store.dispatch(RegistryActions.LoadRegistryLayersAction(this.block));
  }

最初のイベントToggleRegistryBlockActionは、のプロパティblockをtrue / falseに変更します2つ目LoadRegistryLayersActionは、によってサーバーにリクエストを送信し、プロパティblock.idと同じ状態にデータを返しblockます。block.items = Server Response;

私が行動を聞く事実上の側LoadRegistryLayersAction

loadRegistriesLayers$: Observable<Action> = createEffect(() =>
    this.actions$.pipe(
      ofType(RegistryActions.LoadRegistryLayersAction),
      filter(
        (registryGroup) =>
          registryGroup.items && !registryGroup.items.length
      ),
      switchMap((registryGroup: RegistryGroup) =>
        from(this.registry.getRegistryLayers(registryGroup.Id)).pipe(
          map((layers: { [key: string]: RegistryLayerItemGeneric[] }) => {
            return RegistryActions.SuccessLoadRegistryLayersAction({
              payload: {
                layers: this.registry.createLayersMapWithObjects(layers),
                registryGroupId: registryGroup.Id,
              },
            });
          }),
          catchError((error: Error) => {
            return of(RegistryActions.ErrorRegistryLayersAction(error));
          })
        )
      )
    )
  );

私はfilter行動起こし、データがすでに存在するかどうかを確認します。そのために、ブロックにが含まれているかどうかを確認しますregistryGroup.items && !registryGroup.items.length

問題は、実行後にこのエフェクトサーバーが空を返す場合があることです[]そのため、次回、ユーザーがリクエストすると、リクエストが繰り返し送信されます。

それを修正し、データがロードされた場合にサーバーに触れないようにする方法は?

timdeschryver

複数の解決策があります:

  • することができ、ステータスプロパティを保持しloadingloadedempty、...
  • 状態でフェッチされたIDのリストを保持し、リクエストを送信する前にこのリストを確認してください
  • チェックしないでregistryGroup.items.length、配列を次のように初期化します。null

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ngが1回だけ配信されるときに、ページの自動再読み込みを防ぐにはどうすればよいですか?

分類Dev

最初のページの読み込み時にdivが誤って読み込まれるのを防ぐにはどうすればよいですか?

分類Dev

最初のページの読み込み時にdivが誤って読み込まれるのを防ぐにはどうすればよいですか?

分類Dev

Angularアプリの読み込み中にUIスレッドがフリーズするのを防ぐにはどうすればよいですか?

分類Dev

(クリックによる)ユーザーのみのデータテーブルでの選択を防ぐにはどうすればよいですか?

分類Dev

kivyでボタンが2回押されるのを防ぐにはどうすればよいですか?

分類Dev

データがCrystalReportの2番目のレコードに続くのを防ぐにはどうすればよいですか?

分類Dev

Flutterの特定のクラスでのみデバイスの回転を防ぐにはどうすればよいですか?

分類Dev

[ログイン] ボタンを複数回クリックすると、ボタンがクリックされた回数と同じ回数、別のページが読み込まれます。これを防ぐにはどうすればよいですか?

分類Dev

Angular 2 + PrimeNGのデータの前にUIが読み込まれないようにするにはどうすればよいですか?

分類Dev

パターンとsedの2回目の一致の前にすべての行を削除するにはどうすればよいですか?

分類Dev

RFIDカードが2回目にサインアウトのために読み取られることをシステムに認識させるにはどうすればよいですか?

分類Dev

USB転送でデータが失われるのを防ぐにはどうすればよいですか?

分類Dev

絞り込みと遅延バインディングの両方を防ぐにはどうすればよいですか?

分類Dev

タブが変更されたときにデータの再読み込みを回避するにはどうすればよいですか?

分類Dev

PythonでRESTAPI(データの保存と読み込み)を作成し、AngularJSで使用するにはどうすればよいですか?

分類Dev

組み込みのPHP関数が名前空間化されるのを防ぐにはどうすればよいですか?

分類Dev

データの読み込み中にreact-nativeFlatListでisLoading要素をレンダリングするにはどうすればよいですか?

分類Dev

書き込み中にエラーが発生した場合、ファイルのワイプを防ぐにはどうすればよいですか?

分類Dev

jQueryで読み込み中のスピナーを表示するにはどうすればよいですか?

分類Dev

春のデータでCrudRepositoryを使って積極的な読み込みを強制するにはどうすればよいですか?

分類Dev

Laravelへの積極的な読み込みからネストされたデータを取得するにはどうすればよいですか?

分類Dev

ページの読み込み時にデータベースを更新するにはどうすればよいですか?

分類Dev

Spring SAMLにIDPメタデータの再読み込みを強制するにはどうすればよいですか?

分類Dev

Spring SAMLにIDPメタデータの再読み込みを強制するにはどうすればよいですか?

分類Dev

divへのページの読み込みを遅くするにはどうすればよいですか?

分類Dev

Python-2回目の発生をテストするにはどうすればよいですか?

分類Dev

Jquery $ .postメソッドでデータの読み込みを検出するにはどうすればよいですか?

分類Dev

bufferedWriterがすでにファイルにあるテキストを再書き込みするのを防ぐにはどうすればよいですか?

Related 関連記事

  1. 1

    ngが1回だけ配信されるときに、ページの自動再読み込みを防ぐにはどうすればよいですか?

  2. 2

    最初のページの読み込み時にdivが誤って読み込まれるのを防ぐにはどうすればよいですか?

  3. 3

    最初のページの読み込み時にdivが誤って読み込まれるのを防ぐにはどうすればよいですか?

  4. 4

    Angularアプリの読み込み中にUIスレッドがフリーズするのを防ぐにはどうすればよいですか?

  5. 5

    (クリックによる)ユーザーのみのデータテーブルでの選択を防ぐにはどうすればよいですか?

  6. 6

    kivyでボタンが2回押されるのを防ぐにはどうすればよいですか?

  7. 7

    データがCrystalReportの2番目のレコードに続くのを防ぐにはどうすればよいですか?

  8. 8

    Flutterの特定のクラスでのみデバイスの回転を防ぐにはどうすればよいですか?

  9. 9

    [ログイン] ボタンを複数回クリックすると、ボタンがクリックされた回数と同じ回数、別のページが読み込まれます。これを防ぐにはどうすればよいですか?

  10. 10

    Angular 2 + PrimeNGのデータの前にUIが読み込まれないようにするにはどうすればよいですか?

  11. 11

    パターンとsedの2回目の一致の前にすべての行を削除するにはどうすればよいですか?

  12. 12

    RFIDカードが2回目にサインアウトのために読み取られることをシステムに認識させるにはどうすればよいですか?

  13. 13

    USB転送でデータが失われるのを防ぐにはどうすればよいですか?

  14. 14

    絞り込みと遅延バインディングの両方を防ぐにはどうすればよいですか?

  15. 15

    タブが変更されたときにデータの再読み込みを回避するにはどうすればよいですか?

  16. 16

    PythonでRESTAPI(データの保存と読み込み)を作成し、AngularJSで使用するにはどうすればよいですか?

  17. 17

    組み込みのPHP関数が名前空間化されるのを防ぐにはどうすればよいですか?

  18. 18

    データの読み込み中にreact-nativeFlatListでisLoading要素をレンダリングするにはどうすればよいですか?

  19. 19

    書き込み中にエラーが発生した場合、ファイルのワイプを防ぐにはどうすればよいですか?

  20. 20

    jQueryで読み込み中のスピナーを表示するにはどうすればよいですか?

  21. 21

    春のデータでCrudRepositoryを使って積極的な読み込みを強制するにはどうすればよいですか?

  22. 22

    Laravelへの積極的な読み込みからネストされたデータを取得するにはどうすればよいですか?

  23. 23

    ページの読み込み時にデータベースを更新するにはどうすればよいですか?

  24. 24

    Spring SAMLにIDPメタデータの再読み込みを強制するにはどうすればよいですか?

  25. 25

    Spring SAMLにIDPメタデータの再読み込みを強制するにはどうすればよいですか?

  26. 26

    divへのページの読み込みを遅くするにはどうすればよいですか?

  27. 27

    Python-2回目の発生をテストするにはどうすればよいですか?

  28. 28

    Jquery $ .postメソッドでデータの読み込みを検出するにはどうすればよいですか?

  29. 29

    bufferedWriterがすでにファイルにあるテキストを再書き込みするのを防ぐにはどうすればよいですか?

ホットタグ

アーカイブ