2016-10-31 4 views
2

私はおもちゃのチケットシステムを実装しています。React + Redux Stateの実装 - 同じコレクションへの2つの関連付け、1は他のもののサブセットです

問題は、redux状態を構造化するための最も慣用的な方法ではわかりません。

背景:

すべてのユーザーが認証されています。

ユーザーのサブセットは、譲受人としてチケットにリンクされていてもよく、どのユーザーもチケットを購読して更新を受け取ることができます。マルチに

class Tickets < ActiveRecord::Base belongs_to :assignee, class_name: User has_many :subscribers, class_name: User end

譲受人のための可能なユーザの選択リストを表示する必要があり、チケットのUI、および同種のもの:バックエンドで

、ActiveRecordの定義は次のようになりますサブスクライバを選択します。

問題:

は私はわからない場合:

  • 私は、単一のReduxの状態に会社のすべてのユーザーを引っ張って、その後、直前に小道具のユーザーをフィルタリングする必要があります
  • または、割り当て可能なユーザーと購読可能なユーザーをサーバーから独立して取り出し、さまざまな状態(結合されている、およびマントドロップなど)に保存する必要がある場合
  • 他に何か?

答えて

2

Reduxでリレーショナルエンティティを処理する標準的なアプローチは、それらを「正規化された」構造体に格納し、次にエンティティIDの配列を使用して順序付け、フィルタリングなどを示すことです。あなたのバックエンドに対応する、あなたの状態のチケットとユーザ "テーブル"。

私はこのトピックであなたのためのいくつかの読書へのポインタを持っています。最初に、Redux FAQの概要はhandling relational data in Reduxです。

第2に、Reduxドキュメントには、新しいStructuring Reducersセクションがあります。このセクションには、正規化されたRedux状態の例と、さらに読むためのリソースがあります。

第3に、Redux-ORMというライブラリをお勧めします。これは、店舗内の正規化されたデータを管理するための抽象レイヤーとして機能します。

最後に、実際にはRedux-ORMを実際に使用するために開発した概念とテクニックを議論するいくつかのブログ記事を書いています。私は今夜​​私のブログ(http://blog.isquaredsoftware.com)にこれらの投稿を公開したいと考えています。

編集

アップデート:私はReduxのと私自身の経験から開発した技術を議論する、a series on "Practical Redux"の最初のカップル部品としてReduxの-ORM上でこれらの記事を公開しました。

+0

OKです。ほとんど...ユーザが一日中アプリケーションにいた場合のチケットの例を使用して、チケット間のフリックは状態がばかげて大量になるだけではありませんか?または私はreduxでいくつかの淘汰メカニズムを欠いていますか? –

+0

Reduxには「カリング・メカニズム」はありません。アプリケーションの「書き込み」ロジックを編成するパターンです。データの一部を消去したい場合は、それを実装するのはあなた次第です。つまり、その点で他のクライアント側のツールキットと変わりはありません。 – markerikson

関連する問題