Duże klasy, rozbudowane komponenty.

0

Jak radzicie sobie w sytuacji, gdy komponent ma zbyt dużo funkcji (od strony końcowego użytkownika) i żeby to wszystko napisać - trzeba stworzyć klasę z 400+ liniami kodu? Przykład: multiselect. Ostatnio musiałem zaimplementować multiselecta od zera. Nie byłoby to cieżkie gdyby nie to, ile "opcji" musiał mieć taki multiselect. Wybieranie za pomocą myszki, usuwanie wybranych pozycji, wybieranie za pomocą klawiatury, focus za pomocą klawiatury na część z multiselectem, na część z opcjami (jeszcze z 10 innych funkcji by się znalazło).

Rozdzieliłem to na trzy komponenty: wybrane pozycje, możliwości do wyboru i kontener który wszystko to zawierał. W tym kontenerze była główna logika. Problem jest taki, że ten kontener ma 400 linii (testy koło 1k), lista ma koło 100, wybrane pozycje koło 200. Przez ilość linii - uważam, że bardzo ciężko się w tym poruszać, na pewno łatwiej by było jakby klasa miała po 100+-. Nie znam dużo w Reacta, ale wiem że istnieje tam coś takiego jak Context - tylko, że Ja mam problem z tym, że to jest w Angularze i raczej nie znalazłem żadnego odpowiednika Contextu. Globalny store odpada, bo to ma być reużywalny komponent.

Drugi przykład zupełnie inny. Mogą istnieć komponenty gdzie nawet jeśli Store by mógł w tym pomóc to store nie zwraca Observable przy dispatchowaniu akcji co może być bardzo pomocne w przypadku gdy korzystamy z jakichś switchMap i innych dobrodziejstw RxJsa,

2

Ciężko coś powiedzieć bez konkretnego kodu, bo może coś zrobiłeś w zbyt zamotany sposób i zbyt naokoło (wtedy należałoby uprościć, bo to znaczyłoby, że tego kodu jest za dużo), a może jednak po prostu to tyle musiało zajmować przy tylu opcjach czy obsłudze różnych edge case'ów na różnych przeglądarkach/urządzeniach itp. (wtedy należałoby raczej powydzielać to w jakiś sensowny sposób).

1 użytkowników online, w tym zalogowanych: 0, gości: 1