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.
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. –
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
Nur so folge ich. Zunächst einmal würden Sie ein Formular für die gesamte Liste der Vermögenswerte empfehlen? –