Hejto.pl
Dodaj post

Wpisz coś do wyszukania (minimum 2 znaki)

Wpis użytkownika kris w Programowanie

Tytan

w Programowanie

26piorunów


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 - 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 :slightly_smiling_face:)

Komentarze (19)

Osobistość0piorunów

@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/

Uncontrolled mode | Mantineuse-form uncontrolled mode to improve performanceMantine
Tytan0piorunów

@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 :slightly_smiling_face:

Gruba ryba2piorunów

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

Tytan1piorunów

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

Sum5piorunów

@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.

FormData - Web APIs | MDNThe FormData interface provides a way to construct a set of key/value pairs representing form fields and their values, which can be sent using the fetch(), XMLHttpRequest.send() or navigator.sendBeacon() methods. It uses the same format a form would use if the encoding type were set to "multipart/form-data".MDN Web Docs
Tytan3piorunów

@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

Lider12piorunów

@kris jestem w szoku, ze nie potraficie tego naprawic. Przeciez wystarczy

Gruba ryba11piorunów

@bartek555 oprócz tego ludzie

GURU5piorunów
> czy zdarzyło się Wam zauważyć, że formularze na hejto czasem potrafią się przycinać albo działać wolniej?

@kris Tak, w każdym wątku gdzie jest 100+ komentarzy, a o co chodzi? xD

Lider9piorunów

@kris jeżeli masz uwagi co do funkcjonowania portalu proszę o kontakt na

spam@hejto.pl

Moja administracja zajmie się tym niezwłocznie.

Pozdrawiam

Autorytet5piorunów

@kris Skopiowało mu się raz za dużo! xD

Lider7piorunów

@kris Gdzie jest @owczareknietrzymryjski gdy jest naprawdę potrzebny?

Mistrz6piorunów

@kris @bori jestem w robocie. A tak serio to nie zauważyłem żeby się formularze muliły. Mulą się całe strony czasami jak jest od groma komentarzy (tak z 30+). Nie wiem czy ma to związek z tym ze formularze są ukrywane i pokazywane dopiero przy kliknięciu odpowiedz czy to jest inny problem.

Tytan5piorunów

@bori no właśnie, gdzie on jest :interrobang: