Ich arbeite an einer Shop-Administration mit react, alt und immutable. Mein Angebot Objekt sieht mehr oder weniger wie folgt aus:Best Practice: Komponenten wiederverwenden oder Duplikate schreiben
offer: {
groups: [{
articles: [{
optionGroups: [{
options: []
}]
}]
}]
}
ich jeden Eintrag iterieren und ein Formular an, die Gruppe, Artikel zu bearbeiten, .... Wenn etwas geändert wird, rufe ich eine OfferAction auf und übergebe den Pfad, das geänderte Feld und den neuen Wert an die Entität, z. OfferActions.update([2, 'articles', 5, 'optionGroups'], 'name', 'MyOptionGroup')
Jetzt möchte ich das exakt gleiche Formular anzeigen, aber mit verschiedenen Platzhaltern und ChangeHandlers. Wenn ein Formular ausgefüllt ist, sollte die Entität erstellt werden (eine andere OfferAction muss aufgerufen werden). Was ist die beste Vorgehensweise, um dies zu tun?
Ich dachte an den folgenden Möglichkeiten:
Push-leer-Elemente auf OfferStor Zustand
Die leeren Elemente wie die andere angezeigt werden. Ich muss keine Komponenten duplizieren, aber ich muss mehrere Prüfungen implementieren, die nach einer Änderung OfferAction aufgerufen werden müssen, Platzhalter zum Rendern und Werte, die ausgeblendet werden sollen, wenn sie fehlen. Nachdem die Entität erstellt wurde, würde ich einfach ein weiteres leeres Element auf das Angebotsarray schieben.
zweite Komponente erstellen
ich nur eine zweite Komponente schaffen könnte, die ich machen. Ich würde das Formular über einen internen Status verwalten, die Entität erstellen, wenn das Formular ausgefüllt ist, und den Status zurücksetzen. Dies würde zu einer Beute von doppeltem jsx führen.
Gibt es Best Practices, um dies zu erreichen, ohne Komponenten zu duplizieren oder andere zu verkomplizieren?
Erstellen Sie ein leeres Angebotsobjekt vor dem Rendern, die Komponente bezieht sich immer auf das Geschäft. Fügen Sie einfach ein Flag zum Angebotsobjekt hinzu, zB 'isnew'. Wenn Angebot mit isnew == true storniert, entfernen Sie es aus dem Geschäft. –