2016-11-18 2 views
3

Szenario: Ich habe eine Liste der Vermögenswerte <AssetList />. Während der Benutzer zum unteren Ende der Liste scrollt, lädt meine App den Rest der Assets. Je nachdem, wie weit der Benutzer scrollt, können Hunderte, wenn nicht Tausende von Assets geladen werden.Redux: ein Formular pro Datensatz für potenziell Tausende von Datensätzen

Das Problem: Klicken auf jedes Asset <Asset /> wird es erweitern und dem Benutzer ermöglichen, seine Felder (Name, Inhalt, ..) zu bearbeiten Der Übergang sollte nahtlos sein. Aus meiner Sicht muss jedes Asset ein Formular sein. Meine Bedenken sind 1) Ansatz und 2) Leistung.

Ansatz: Der Ansatz, den ich hier nehme, verwendet ein Formular pro Datensatz mit redux-form. Gibt es Alternativen dazu, die auch die Flussarchitektur durchsetzen? Ist das ein häufiges Problem?

Ein weiteres hier möglicher Ansatz ist es, den Zustand Baum als solche zu ändern und ein Formular pro die gesamte Bestandsliste haben:

{ 
    assets: {..}, 
    assetForm: {..} 
} 

und klicken ein <Asset /> wird stattdessen die entsprechende Aktion auslösen, die zu einer Reduzierung Kaskade wird die aktualisiert den Status 10.

Leistung: Meine größte Sorge bei weitem. Ich habe nichts gegen die große Anzahl von Formularen auf der Seite, aber was mich interessiert, ist, dass jede Form mit einem redux store reducer verbunden ist (oder zumindest das, was ich denke, wie zum Beispiel redux-form). Mit anderen Worten, hat möglicherweise Tausende von Reduzierern Auswirkungen auf die Leistung?

Ich entschuldige mich, wenn meine Annahmen falsch sind. Ich bin relativ neu zu reagieren & Redux.

Antwort

5

Ich denke, dass Sie berechtigte Bedenken zu einem ziemlich häufigen Anwendungsfall aufwerfen. Um einige Ihrer Fragen zu beantworten, denke ich, dass Ihre Herangehensweise gültig ist, mit der Ausnahme, dass Sie sie ein wenig optimieren möchten, um zu vermeiden, dass so viele Formulare erstellt werden. Ich habe nicht persönlich redux-form verwendet, so werde ich diejenigen mit mehr Erfahrung hinzufügen mehr Antworten oder Kommentare, aber aus einer eher abstrakten Sicht, sollten Sie nur ein Formular haben, wenn der Benutzer in eine Asset klickt, daher schlage ich nur vor Rendern des Formulars, wenn auf Asset geklickt wird. Auf diese Weise haben Sie nur so viele Formulare, wie der Benutzer benötigt, dramatisch weniger als eins pro Asset. Wenn Sie ein Formular per Asset initialisieren müssten, wiederum ohne spezifische Erfahrung, könnten Sie nicht sicherstellen, dass Sie eine ziemlich einfache Staatsstruktur haben und nur daran anhängen, wenn ein Formular initialisiert wird ? Das heißt, denken Sie an eine Statusvariable namens assetForms, bei der es sich um ein Objekt handelt, bei dem jeder Schlüssel die eindeutige ID Asset ist und der Wert ein anderes Objekt mit den Formulardaten ist. Auf diese Weise bleiben wiederum nur so viele Zustandsobjekte erhalten, wie es Assets gibt.

Hoffe, dass einige der Verwirrung beseitigt, aber fühlen sich frei, auf Ihre Frage zu erweitern, wenn Sie weitere Informationen benötigen.

+0

Vielen Dank @ZekeDroid. Ich habe tatsächlich erwogen, zunächst ein Formular pro gesamte Asset-Liste zu haben. Ich habe gerade meine Frage präzisiert. Ich denke, deine Herangehensweise ist solide. Was Ihren zweiten Teil betrifft, in dem Sie auf '' AssetForms'' verweisen - das wird von redux-form verwaltet. Sie geben es mit einem Formularschlüssel an, bei dem es sich um Ihre Asset-ID handeln könnte, und speichert den Formularstatus, den Wörterbuchstil. –

+1

Ah ich sehe, und wie kompliziert sind Ihre Formulare genau? Ich würde fast empfehlen, die Felder selbst zu verwalten, da dies die Arbeit viel einfacher macht. Sie können jedes Asset mit einer ID und einem Callback für "onChange" initialisieren, so dass das übergeordnete Element eine Aktion wie '{type: 'ASSET_CHANGED', AssetID: 'some_id', fieldsChanged: {name: 'auslösen kann. foo ', Beschreibung:' bar '}} '. Auf diese Weise haben Sie absolut keine zusätzlichen Informationen und wiederum nur so viele Statusfelder, wie der Benutzer versucht, sie zu ändern. – ZekeDroid

+0

Nur so folge ich. Zunächst einmal würden Sie ein Formular für die gesamte Liste der Vermögenswerte empfehlen? –

Verwandte Themen