Pracuję nad administracją sklepu z reakcją, alt i niezmienną. Moja oferta obiekt wygląda mniej więcej tak:Najlepsza praktyka: ponowne wykorzystywanie komponentów lub pisanie duplikatów
offer: {
groups: [{
articles: [{
optionGroups: [{
options: []
}]
}]
}]
}
I iteracyjne nad każdą pozycję i wyświetlić formularz do edycji grupy, artykuł, .... Jeśli coś się zmieni, wywołuję OfferAction i przekazuję ścieżkę, zmienione pole i nową wartość podmiotowi, np. OfferActions.update([2, 'articles', 5, 'optionGroups'], 'name', 'MyOptionGroup')
Teraz chcę wyświetlić dokładnie ten sam formularz, ale z różnymi symbolami zastępczymi i zmiennymi komunikatami. Jeśli formularz jest wypełniony, należy utworzyć encję (musi być wywołana inna właściwość OfferAction). Jaka jest najlepsza praktyka, aby to zrobić?
Myślałem o następujących możliwości:
push pusty Elementy na stanie OfferStore
Puste elementy będą wyświetlane jak inni. Nie muszę duplikować żadnych komponentów, ale muszę wprowadzić wiele sprawdzeń, które OfferAction muszą zostać wywołane po zmianie, symbole zastępcze do renderowania i wartości ukryte, jeśli ich brakuje. Po utworzeniu obiektu po prostu wepchnęłbym inny pusty element do tablicy ofert.
Tworzenie 2nd komponent
może po prostu utworzyć drugi składnik, który ja render. Zarządzałbym formularzem poprzez wewnętrzny stan, tworzenie encji po wypełnieniu formularza i resetowanie stanu. Doprowadziłoby to do łupu duplikatu jsx.
Czy istnieje jakaś najlepsza praktyka do archiwizowania tego, bez powielania składnika lub komplikowania innych?
Utwórz pusty obiekt oferty przed renderowaniem, komponent zawsze powiązany ze składem. Wystarczy dodać flagę do zaoferowania obiektu, np. "Isnew". Gdy oferta z isnew == true cancelled, usuń ją ze sklepu. –