Sobes.tech
Middle

Je možné v funkčním komponentu poskytnout externí přístup k metodám komponenty (dát 'rukojeti' venku)?

sobes.tech AI

Odpověď od AI

Ve funkčních komponentách React lze poskytnout externí přístup k metodám komponenty pomocí forwardRef a useImperativeHandle.

To umožňuje 'předat' referenci a určit, které metody nebo vlastnosti budou dostupné zvenčí.

Příklad:

import React, { useImperativeHandle, forwardRef, useState } from 'react';

const MyComponent = forwardRef((props, ref) => {
  const [count, setCount] = useState(0);

  useImperativeHandle(ref, () => ({
    increment() {
      setCount(c => c + 1);
    },
    reset() {
      setCount(0);
    }
  }));

  return <div>Počet: {count}</div>;
});

// Použití
// const ref = React.createRef();
// <MyComponent ref={ref} />
// ref.current.increment();

Tímto způsobem může externí kód volat metody increment a reset komponenty.