Sobes.tech
Middle

Αν διαγράψετε την αναφορά σε μια κλασική συνιστώσα, η τιμή της αναφοράς θα είναι η παρουσία της κλάσης. Μπορείτε να κάνετε κάτι παρόμοιο με μια λειτουργική συνιστώσα — να περάσετε μια αναφορά και να λάβετε σε αυτή, για παράδειγμα, μια λειτουργία που δηλώνεται μέσα στη συνιστώσα;

sobes.tech AI

Απάντηση από 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.