Sobes.tech
Middle

Czy w komponencie funkcyjnym można zapewnić zewnętrzny dostęp do metod komponentu (dając 'uchwyty' na zewnątrz)?

sobes.tech AI

Odpowiedź od AI

W funkcjonalnych komponentach React można zapewnić zewnętrzny dostęp do metod komponentu za pomocą forwardRef i useImperativeHandle.

Pozwala to na 'przekazanie' referencji i określenie, które metody lub właściwości będą dostępne z zewnątrz.

Przykład:

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>Licznik: {count}</div>;
});

// Użycie
// const ref = React.createRef();
// <MyComponent ref={ref} />
// ref.current.increment();

W ten sposób zewnętrzny kod może wywołać metody increment i reset komponentu.