Możliwość przyjmowania komponentu jako prop

Time to go meta!

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:

Mogłby być komponentem, którzy przyjmuje jako argument cztery inne komponenty (dwa razy responsive image i dwa razy markdown).

Istotnie zwiększyło by to elasyczność naszego systemu. Jestem ciekaw Waszych przemyśleń

A co z definicjami takiego grida? Zrobilibyśmy komponent “grid layout” przyjmujący inne komponenty?

Drugie przemyślenie to co z interfejsem do dodawania tego? Bo wydaję mi się że zacznie się robić sieczka edycyjna. :thinking:

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ę :slight_smile:

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:

image

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

1 Like

offtopic: to jest mega nieczytelne :smiley:

2 Likes

Absolutnie nie offtop! Może warto przemyśleć jak można autorom pomóc w tworzeniu czytelnych interfejsów przy okazji używania komponentów :wink:

2 Likes

Tutaj mamy przypadek tła, jedynie co mi przychodzi do głowy to analiza i klasyfikowanie wgranego tła per czytelność tekstu.

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