React · Senior · Frage 17 von 75
Was macht dieser Hook?
const useHandler = (f) => {
const ref = useRef(f);
ref.current = f;
return useCallback((...args) => ref.current(...args), []);
};- 1Er ruft
fbeim Mounten einmal auf und merkt sich den Rückgabewert - 2Er memoisiert das Ergebnis des Aufrufs von
fund berechnet es bei neuen Argumenten neu - 3Er gibt eine stabile Funktion zurück, die immer die neueste Version von
faufruft
Antwort zeigen
Richtige Antwort: Er gibt eine stabile Funktion zurück, die immer die neueste Version von f aufruft
Erklärung
Die Callback-Referenz ist stabil (praktisch für memo-Kinder und Effekt-Abhängigkeiten), sieht innen aber immer frische Props und frischen Zustand. Einschränkung: ref.current beim Rendern zu schreiben verletzt formal die Reinheit des Renderns; React bietet dafür useEffectEvent, und in Effekten würde man die Ref in useLayoutEffect aktualisieren.