#frontend

5
97

#hejto #hejtocontent #programowanie #makingofhejto


Dzień dobry!

Ostatnio w pracy debatowaliśmy nad pewnym problemem z formularzami - zdarzało się, że zaczynały mocno lagować, szczególnie wtedy, kiedy

a) w formularzu występowało wiele inputów,

b) zmiany na jednym inpucie wpływały na wartość w innym (np. zmiany w polu "Title" wpływały na wartości w polu "Id").


Stack jaki tam aktualnie mamy to Formik + Yup. Z uwagi na fakt, że problem ten był już wcześniej łatany z różnym skutkiem to teraz padła decyzja na zmianę biblioteki obsługującej formularze - nowy stack to react-hook-form + zod.


Ta sytuacja przypomniała mi, że na hejto również korzystamy z Formik + Yup – może więc i u nas przydałaby się zmiana?


Chciałbym zapytać się:
1. Programistów #webdev #frontend #react - czy macie jakieś doświadczenia/przemyślenia w tym temacie?
2. Wszystkich Użytkowników - czy zdarzyło się Wam zauważyć, że formularze na hejto czasem potrafią się przycinać albo działać wolniej? (o problemie w działaniu formularza dodawania komentarza, kiedy jest sporo komentarzy już wiem i jak to ogarnę to będzie o tym osobny wpis )

89db76cb-b196-482d-b48c-2cdde11fd419
renkeri

@kris Z formik i react-hook-form nie korzystałem bardzo długo, ale z zod'a korzystam regularnie i jest super. Z takich swoich doświadczeń, to mi przy dużych formularzach pomagało wywalanie state skąd tylko się da. Kiedy każdy input ma swój state, to zaczyna to trochę mulić, a wszystko na dobrą sprawę w submit można wyciągnąć z FormData. Jeżeli chodzi o czyszczenie formularza, to przydaje się zmiana `key`, wtedy każdy input wraca do `defaultValue`. No ale wiem, że nie zawsze się tak da.

kris

@renkeri ja właśnie o zod też wiele dobrego słyszałem, na pewno lepiej waliduje url bo yup przy poprawnym (trochę dziwnym ale jednak poprawnym) linku wywalał błąd a zod go przepuszczał. Rzeczywiście modyfikacja stanu może wpływać negatywnie na performance, szczególnie jak stan jest zadeklarowany w parencie z wieloma childrenami (co może występować u nas właśnie przy dużej ilości komentarzy) - na pewno sprawdzę ten trop

lurker_z_internetu

Rozwalającą się składnie posta przy edycji byście naprawili. Cytat przeskakuje zawsze na kolejny akapit.

kris

@lurker_z_internetu podrzucisz jakieś screeny z przykładem niepoprawnego działania?

Catharsis

@kris No generalnie najprościej jest nie przechowywać niczego z formularza w React state, wtedy formularz nie laguje bo nie rerenderuje go całego przy każdym inpucie. Mantine w swoich formularzach ma np. opcje "uncontrolled mode" i dosłownie maja napisane: "Controlled mode is not recommended for large forms". Nie wiem jak to u was wygląda w tej bibliotece bo nigdy z niej nie korzystałem. Ogólnie nie jestem też jakimś expertem Reacta żeby nie było xD. https://mantine.dev/form/uncontrolled/

kris

@Catharsis co do formularzy z inputami w trybie uncontrolled - raczej ich do tej pory nie używałem a to głównie dlatego, że poniekąd wymuszały to biblioteki, z których korzystałem. react-hook-form jest pod tym względem trochę inny bo wewnętrznie właśnie obsługuje inputy jako "uncontrolled" przez co automatycznie ogranicza liczbę renderów ale przy tym ma metody na dobranie się do aktualnej wartości wypełnionego pola - chyba dlatego w moim osobistym rankingu wygrywwa z formikiem

Zaloguj się aby komentować

Zaloguj się aby komentować

Zaloguj się aby komentować

Ej wy tam od front endu, UI czy cokolwiek. Czy was tez razi to YOU ARE HERE poza mapa i druga kropka bez opisu? Czy to tylko moje ocd?


#barteknamorzu #frontend #ui #it

2dbaa95c-fdf2-4a84-803e-7a04578178e5
Felonious_Gru

@bartek555 no jesteś obok 602, jest czytelnie.

bori

@bartek555 Szóstki oznaczają 6. poziom?

bartek555

@bori tak, 6 podklad liczac od glownego.


  1. Main deck

  2. mezzanine deck (taki posredni, w kilku miejscach)

  3. A-deck

  4. B-deck

  5. C-deck

  6. D-deck

kitty95

Jest ok, często tak się na planach oznacza. Ale numeracja pomieszczeń parzyste prawa, nieparzyste lewa i jeszcze odwrotnie pokazane to arcydzieło sztuki planistycznej.

Zaloguj się aby komentować

renkeri

@fewtoast To jest picture-in-picture, w obydwu przypadkach, ale przez to, że Chrome wspiera API picture-in-picture, to mogli dodać customowy przycisk, który zmienia stan. Na Firefox przycisk do zmiany stanu picture-in-picture zobaczysz na każdym elemencie video (niekoniecznie tylko na TikTok), jeżeli source jest dłuższy niż 45s (można zmienić to w ustawieniach) i jeżeli nie ma ustawionego atrybutu disablePictureInPicture .


Link do API: https://developer.mozilla.org/en-US/docs/Web/API/Picture-in-Picture_API

fewtoast

@renkeri Ale to nie jest samo wideo. No już mam info że jest PiP dla HTML, nie tylko dla wideo.


Mi się PiP dla wideo w stylu Firefoksa w ogóle nie podoba, to jest bardzo zawodne. Takie pełne, pod kontrolą strony, jest lepsze, stabilniejsze.

Mi YouTube czy inne wideo wywala jak coś net przytnie na przykład i to jest męczące wtedy.


A gdyby cały HTML w to wczedł, własny player, tak jak tu na TikTok, to już w ogóle super by było. A nie taki niedorobiony player wideo PiP, gdzie wszystko Firefox musi ręcznie obsługiwać, dublować. A i tak nie działa za dobrze. A to wszystko niby żeby było bezpieczniej chyba.


Kompletnie pusta zmarnowana robota.

Zaloguj się aby komentować

Następna