Zaimplementuj w TypeScript hook `usePage`, który przyjmuje URL, ładuje dane użytkownika, zwraca `data`, `loading` i `error`, powtarza żądanie przy zmianie URL i poprawnie anuluje żądanie podczas odmontowania komponentu lub zmiany URL.
Frontend
Kiedy wykonywana jest funkcja czyszczenia w `useEffect` i co ona robi w tym przypadku?
Jak poprawnie usunąć obsługę `scroll`, jeśli `addEventListener` i `removeEventListener` mają otrzymać ten sam odwołanie do funkcji?
Opowiedz, co się dzieje ze starymi żądaniami przy zmianie użytkownika i jak `AbortController` zapobiega warunkom wyścigu (race condition).
Czy obiekt zwracany przez hook (`data`, `loading`, `error`) będzie miał tę samą referencję między renderami, jeśli wartości się nie zmieniają? Dlaczego? Jak zachować stabilną referencję do obiektu?
Jaki zespół i projekt: jaka platforma CRM jest rozwijana, do jakich celów biznesowych jest przeznaczona?
Czy tutaj potrzebny jest `useCallback`? Do czego służy i w jakich przypadkach jest przydatny?
Co się stanie, gdy URL w zależnościach `useEffect` się zmieni? W jakiej kolejności wykonywane są funkcja czyszczenia i nowy efekt?
Jakie będą kolejne etapy rekrutacji po tym wywiadzie?
Co się stanie, jeśli URL szybko zmieni się kilka razy z rzędu?