角度4で書かれたアプリケーションの検索機能を実装しようとしています。基本的には、多くのデータを表示しているテーブルです。私はngrxストアも追加しました。 ストアでアプリケーションを検索する正しい方法は何ですか? 現在、私は検索クエリのために毎回ストアをクリアしています。そして、バックエンドへの非同期呼び出しから受け取ったデータでそれを設定しています。私はこのデータをHTMLに表示しています。非同期呼び出しは、エフェクトファイルから行われます。ngrx/store angle 2で検索を実装する
答えて
最近、Angular 4と@ngrxで検索機能を実装しました。 EXECUTE_SEARCHアクションをディスパッチしてクエリ文字列をストアに設定し、エフェクトをトリガーする方法でした。その結果、非同期呼び出しがトリガーされました。非同期呼び出しが返されると、結果に基づいてFETCH_SUCCESSFULアクションまたはFETCH_FAILUREアクションのいずれかがディスパッチされました。成功した場合は、結果を自分の店に設定します。
ストアで結果をクリアすると、本当に目的の動作に依存します。私のプロジェクトでは、FETCH_SUCCESSFULの結果をクリアして、古い結果を置き換えました。他のユースケースでは、EXECUTE_SEARCH減速機で新しい検索を実行したときにストアからの結果をクリアするのが妥当かもしれません。
まあ、私は長年のために、この質問に対する答えを見つけられませんでしたので、私は、データがバックエンドから来て、その後の方法は次のデータを探していたものは何でも節約のアプローチを取った:
私は実装バックエンドへの非同期呼び出しを起動する検索エフェクト。バックエンドからは、検索結果とIDの両方を返していました。データを受け取った後のこの効果は検索完了アクションを発生させる。そして、このレデューサーのアクションでは、私はsearchIdsという名前で私の状態に結果のIDを格納していました。そして、私は基本的にidをキーとするデータのマップである名前エンティティを持つ状態を作成しました。
バックエンドから受け取るデータは、ストアにすでに存在するかどうかを確認するためにフィルタリングされます。存在しない場合はエンティティに追加されます。その後、私は基本的にsearchIdsに存在するキーを検索し、そのデータのみをエンティティから返すセレクタを購読しました。すでにIDをキーとして持つマップだったので、searchIdsに基づいて検索するのは非常に効率的でしたし、すでに持っていたデータをクリアする必要もありませんでした。これは、次に、受け取っていたデータをキャッシュするための@ ngrx /ストアの真の目的を維持しました。
- 1. elasticsearch 2.xで 'Starts with'検索を実装する方法
- 2. Laravelで検索を実装する
- 3. カスタムリストビューで検索を実装する
- 4. レールでセマンティック検索を実装する
- 5. Androidで検索フィルタを実装する
- 6. Androidで検索バーを実装する
- 7. オブジェクトでバイナリ検索を実装する
- 8. Swagger UIで検索を実装する
- 9. javascriptでバイナリ検索を実装する
- 10. カスタムディレクティブangle 4でonclick()を実装する
- 11. 実装検索バー
- 12. 検索の実装
- 13. 角2:googleのような検索予測を実装する
- 14. 検索を実装する方法は?
- 15. Tabu検索を実装するR
- 16. 韻検索を実装する
- 17. Cバイナリ検索ツリーを実装する
- 18. MIPS - バイナリ検索ツリーを実装する
- 19. IOS:スポットライト検索のような検索テキストフィールドを実装する
- 20. 静的ページを検索するサイト検索エンジンの実装
- 21. People検索のような検索を実装する
- 22. ローカルストレージとngrxstore
- 23. PHPでangle JSで$ http.postを実装
- 24. CUDAバイナリ検索の実装
- 25. フィルター検索パイプの実装
- 26. カスタム検索の実装
- 27. 検索ページの実装
- 28. 幅優先検索実装
- 29. Jquery検索ボックスの実装
- 30. A *検索アルゴリズムの実装
あなたは詳しく説明できますか?検索で非同期呼び出しがトリガーされるのですか?これは、「検索クエリ」が受信したデータセットにのみ適用されるフィルタリング機能によく似ていますか? – amu
はい検索によって非同期呼び出しがトリガーされます。 –