React · Senior · Запитання 17 з 75
Що робить цей хук?
const useHandler = (f) => {
const ref = useRef(f);
ref.current = f;
return useCallback((...args) => ref.current(...args), []);
};- ✓Правильна відповідь: Повертає стабільну функцію, яка завжди викликає останню версію
f - 2Мемоізує результат виклику
f, перераховуючи його в разі зміни аргументів - 3Викликає
fодин раз під час монтування й запам'ятовує її повернене значення
Пояснення
Посилання на колбек стабільне (зручно для memo-дітей і залежностей ефектів), але всередині завжди свіжі props і state. Нюанс: запис ref.current під час рендеру формально порушує чистоту рендеру; React для цього завдання пропонує useEffectEvent, а всередині ефектів - оновлювати ref у useLayoutEffect.