シナリオ:私は資産のリスト<AssetList />
を持っています。ユーザーがリストの一番下までスクロールすると、私のアプリは残りのアセットを遅延ロードします。したがって、ユーザーがどれくらい遠くまでスクロールするかによって、数千もの資産でも何百もの資産をロードできます。Redux:潜在的に何千ものレコードのレコードごとに1つのフォーム
問題:各資産<Asset />
をクリックは、それを拡張し、ユーザーがそのフィールドを編集できるようになります(名前、コンテンツを、...)の移行はシームレスでなければなりません。私が見ているように、各資産はフォームである必要があります。私の懸念は1)アプローチと2)パフォーマンスです。
アプローチ:ここで取り組んでいるアプローチは、レコードごとに1つのフォームをredux-form
を使用して使用しています。フラックス・アーキテクチャーを強化する代替手段はありますか?これは共通の問題ですか?ここ
別の潜在的なアプローチは、次のような状態ツリーを変更し、全体の資産リストごとに一つの形を持つことです。
{
assets: {..},
assetForm: {..}
}
そして<Asset />
をクリックする代わりに、その減速にカスケードされます適切なアクションをトリガーしますassetForm
の状態が更新されます。
パフォーマンス:私の最大の懸念事項。私はページ上の多数のフォームに気にしませんが、私の心配は、各フォームがredux store reducer(少なくともredux-form doのようなutilと思われるもの)と関連しているということです。つまり、潜在的に何千もの減速機が性能に影響を与えますか?
私の前提が正しくない場合は、よろしくお願いいたします。私は反応するために比較的新しいです&還元。
ありがとうございます@ZekeDroid。私は、最初は資産リスト全体で1つのフォームを最初に持っていると考えました。私はより詳細な質問を更新しました。あなたのアプローチは健全だと思います。あなたの2番目の部分については、 '' assetForms''を参照してください - それはredux-formによって管理されます。アセットIDとなるフォームキーを入力し、フォームの状態、辞書スタイルを保存します。 –
ああ、私は、あなたのフォームは正確にどのくらい複雑ですか?フィールドを自分で管理することをお勧めします。作業がはるかに簡単になるからです。このコールバックで親が '{type:' ASSET_CHANGED '、assetID:' some_id '、fieldsChanged:{name:'}のようなアクションを起こせるように、各アセットをIDとコールバックで 'onChange'に初期化することができます。 foo '、description:' bar '}}}。このようにして、ユーザーは何も追加情報を持たず、ユーザーが変更しようとする数の状態フィールドだけを使用することができます。 – ZekeDroid
ちょうど私は従う。まず、資産のリスト全体で1つのフォームをお勧めしますか? –