Проверяет понимание работы ref с функциональными компонентами и использование useImperativeHandle для кастомизации возвращаемого значения.
По умолчанию функциональные компоненты не поддерживают ref, так как у них нет экземпляра класса. Однако React предоставляет механизм для кастомизации ref с помощью комбинации forwardRef и useImperativeHandle.
import React, { forwardRef, useImperativeHandle, useState } from 'react';
const Child = forwardRef((props, ref) => {
const [count, setCount] = useState(0);
useImperativeHandle(ref, () => ({
increment: () => setCount(c => c + 1),
getCount: () => count
}));
return <div>{count}</div>;
});
function Parent() {
const childRef = useRef();
return (
<>
<Child ref={childRef} />
<button onClick={() => childRef.current.increment()}>+</button>
</>
);
}forwardRef передаёт ref из родителя в дочерний компонент как второй аргумент.useImperativeHandle определяет, какие свойства и методы будут доступны через ref.Используйте useImperativeHandle с forwardRef, когда нужно предоставить внешний интерфейс для функционального компонента — например, для управления фокусом, анимациями или вызова внутренних методов из родителя.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию