私たちは再フレームアプリのDBは次のように整理さがあります。再フレームデシベル組織
{:meta {:page/search {:page/component #'...} :page/details {:page/component #'...}}
:widget/base {:cur-page-id :page/search}
:page/search {:page/route {:query-params {:q "1"}, ...},
:page/details {:page/route {:query-params {:q "2"}}, ...}
は不変:meta
の下にあるすべてのものを考えてみましょう。
base
ウィジェットは、[:widget/base :cur-page-id]
にサブスクライブし、次に[:meta cur-page-id :page/component]
を選択して、現在選択されているページをレンダリングします。 また、ページ自体にも現在のページの:page/route
が必要です。それは(fn [db] (get-in db [cur-page-id :page/route]))
に加入することによってこれを得る。これはアンチパターンである可能性があります。なぜなら今はデータベース全体を購読しているからです。
これをリファクタリングすることはできますが、パフォーマンスに何がかかるか最初に知っておくとよいでしょう。これを適切に測定する方法はありますか?
たとえば、 :widget/base
エントリの下にルートを格納します。ここで、ページは:widget/base :routes
のみを選択するサブスクリプション経由で独自のルートを検索し、データベース全体のサブスクリプションを避けます。