Back to questions
СБЕР
Middle
2
Если бросить ref-ссылку на классовый компонент, то значением ref будет instance класса. Можно ли сделать нечто подобное с функциональным компонентом — передать ref и получить в нём, например, функцию, объявленную внутри компонента?
Companies where asked
Answer from AI
sobes.tech AI
В функциональных компонентах React напрямую получить instance, как в классовых, нельзя, так как у функциональных компонентов нет экземпляра класса. Однако можно использовать forwardRef вместе с useImperativeHandle, чтобы передать ref и определить, какие методы или свойства будут доступны извне.
Пример:
import React, { useImperativeHandle, forwardRef, useRef } from 'react';
const MyComponent = forwardRef((props, ref) => {
const localRef = useRef();
useImperativeHandle(ref, () => ({
myFunction: () => {
console.log('Вызов функции из родителя');
}
}));
return <div ref={localRef}>Пример компонента</div>;
});
// Использование:
// const ref = React.createRef();
// <MyComponent ref={ref} />
// ref.current.myFunction();
Таким образом, можно "экспонировать" функции или данные из функционального компонента через ref.