React · Senior · Pytanie 17 z 75
Co robi ten hook?
const useHandler = (f) => {
const ref = useRef(f);
ref.current = f;
return useCallback((...args) => ref.current(...args), []);
};- ✓Poprawna odpowiedź: Zwraca stabilną funkcję, która zawsze wywołuje najnowszą wersję
f - 2Memoizuje wynik wywołania
f, przeliczając go przy zmianie argumentów - 3Wywołuje
fraz przy montowaniu i zapamiętuje zwróconą wartość
Wyjaśnienie
Referencja do callbacku jest stabilna (wygodne dla dzieci z memo i zależności efektów), ale w środku zawsze widzi świeże propsy i stan. Uwaga: zapis ref.current podczas renderu formalnie łamie czystość renderu; React proponuje do tego zadania useEffectEvent, a w efektach ref aktualizuje się w useLayoutEffect.