2016-10-17 3 views
0

私はreduxのエンティティ/データのisFetchingを格納する一般的な方法を作成したいと考えています。現在私はnormalizrを使用し、すべてのエンティティデータをエンティティハッシュに格納します。例私のレキシックスストアにisFetching/isLoadingデータをどのように格納すればよいですか?

{ 
    people: { ... }, 
    orders: { ... } 
} 

のために私は(つまり、人々、受注...)各エンティティにdefining a propertyのデータをフェッチしているかどうかを指定するためのオブジェクトを考えていました。これに関する唯一の問題は、Object.keysのようなことをすると、あなたの配列にids + isFetchingのリストを返すことになります。これを克服するためには、プロパティを列挙できないように設定します。

私のデータはかなり複雑です。私は2つのエンティティしか持っていません。この例では単純化しました。私は長期的に私のコードベースで生き残ることができるソリューションを探しています。

これは良い解決策ですか?私はメタデータを格納するためだけに新しいオブジェクトを作成したくはありませんでした(これは潜在的な解決策です)。より良いまたはより一般的なアプローチがありますか?

私はこれは少し独断ですけど、Reduxの発行ガイドラインは、私がObject.definePropertyとの互換性の問題を認識してい...

注意StackOverflowのために私を指摘しました。これは内部アプリケーションであり、誰もが最新バージョンのchromeを使用しています。 Reduxのストア

let initialState = { 
    entities: { 
    customers: null, 
    orders: null 
    } 
}; 

Object.defineProperty(initialState.entities.customers, 
    'isFetching', 
    { 
    value: false, 
    writable: true, 
    enumerable: false 
    }); 

Object.defineProperty(initialState.entities.orders, 
    'isFetching', 
    { 
    value: false, 
    writable: true, 
    enumerable: false 
    }); 


export default initialState; 

答えて

1

UPDATE

潜在的な実装私は非可算のプロパティを定義するプロパティが列挙ではないという事実ので、維持するためにあなたのコードベースが難しくなると思い、デバッグ時にほとんどの時間隠されています。

normalizrの例に従うだけで、entitiesの横にメタデータを置くことができます。例えば:これは、今後のメタデータのさらなる拡張を可能にする。

+0

現在、私は自分の店に 'entities.people'を持っています。人を動かすことを提案しています。つまり、自分のエンティティを格納する方法を逆転させますか?それは潜在的に長期的には良いかもしれませんが、私のエンティティを1つのセクションの下でグループ化するのはいいことでした。 –

+0

申し訳ありませんが、それを見ていませんでした。しかし、私の答えは、メタデータ(imho)をリストの兄弟として保存する必要があるという点です。それだけでなく、店舗の状態を平らにすることは常に良いです。 'エンティティ'は文字通りすべてを意味するため、最良のドメインではないかもしれません(RESTエンドポイントからエンティティまでのすべてではありませんか?)。 *編集:私の答えを更新します。* –

+0

あなたはredux文書で与えられたテクニックを使用しています。エンティティがあるという事実はエスケープできません。私はすべての私のユニークなデータを何らかの形でまとめたいと思います。私はより具体的なデータのフィルタリングされたデータなどのセレクタを使用しています... https://github.com/reactjs/redux/blob/master/examples/real-world/src/reducers/index.js –

関連する問題