Rozważam od jakiegoś czasu dodanie do komponentów w Sealpage’u możliwości ustawienia prop type na component. Można by wtedy tworzyć komponenty od layoutu - takie komponenty wyższego poziomu, np. taki oto grid:
A co jeśli ktoś chce zrobić 3 kolumny po dwa wiersze? W CMSach takie rzeczy zwykle rozwiązuje się nadawaniem wariantów na komponenty, zamiast robić komponent przyjmujący inne komponenty polecam rozważyć taką opcję
Ok, być może layout to nie jest dobry use-case dla takiego scenariusza. Ale są przypadki, kiedy zamiast mnożyć 1000 wariantów dla danego komponentu można by po prostu składać bardziej złożone rzeczy z gotowych klocków, np taki komponent:
który dostaje jako propsa obrazek, który ma być po lewej, oraz normalne array-of-objects tego, co ma być po prawej
Pola musiałyby się zagnieżdżać. Każde zagnieżdżone pole miało by wcięcie z lewej strony, dzięki czemu będzie można własnoocznie sparsować strukturę zagnieżdżenia pól
Znalazłem kolejny przypadek, który dobrze pasuje do idei przyjmowania komponentów jako prop - nasza strona firmowa ma w projekcie m.in. następujące segmenty:
Łączy je fakt, że zawierają ztintowaną grafikę w tle. Myślę, że jest to dobra okazja do tego, żeby zamiast tworzyć trzy komponenty które mają jako tło ztintowaną grafikę możemy stworzyć jeden komponent, który odpowiada za tworzenie i stylowanie grafiki, a przyjmuje jako props HTML z resztą zawartości. Dzięki temu każdy istniejący komponent będziemy mogli urozmaicić ztintowaną grafiką, a nie tylko te trzy
Myślę, że w tym wypadku wystarczyło by dać parametr określający “intensywność” tła, gdzie im mniejsza intensywność tym bardziej tło jest wyblakłe i bliższe jednolitemu kolorowi.
Wciąż jednak chciałbym bardziej poddać tutaj dyskusji samą rację bytu podawania komponentu jako prop do innych komponentów, tworząc swojego rodzaju sealpage’owe higher-order-components