Изучение альтернативных подходов к ссылкам на строки в функциональных компонентах

В мире функциональных компонентов React ссылки на строки когда-то были распространенным способом доступа к элементам DOM и манипулирования ими. Однако, начиная с версии React 16.3, ссылки на строки устарели и заменены ловушкой useRef(). В этой статье мы рассмотрим различные методы и примеры кода для достижения аналогичной функциональности с помощью useRef() и других альтернативных подходов.

  1. Использование useRef():
    Рекомендуемый подход — использовать хук useRef() для создания объекта ref, который можно прикрепить к элементу DOM или любому другому значению. Вот пример:
import React, { useRef } from 'react';
const MyComponent = () => {
  const myRef = useRef(null);
  const handleClick = () => {
    myRef.current.focus();
  };
  return (
    <div>
      <input ref={myRef} />
      <button onClick={handleClick}>Focus Input</button>
    </div>
  );
};
  1. Ссылки обратного вызова.
    Другой подход — использовать ссылки обратного вызова, которые включают передачу функции в качестве значения ссылки. Эта функция будет вызываться с элементом DOM или значением, на которое ссылаются. Вот пример:
import React, { useRef } from 'react';
const MyComponent = () => {
  const myRef = useRef(null);
  const setRef = (node) => {
    myRef.current = node;
  };
  const handleClick = () => {
    myRef.current.focus();
  };
  return (
    <div>
      <input ref={setRef} />
      <button onClick={handleClick}>Focus Input</button>
    </div>
  );
};
  1. Пересылка ссылок:
    Если вам нужно передать ссылку дочернему компоненту, вы можете использовать пересылку ссылок. Это позволяет вам напрямую обращаться к элементу DOM дочернего компонента. Вот пример:
import React, { useRef, forwardRef } from 'react';
const ChildComponent = forwardRef((props, ref) => {
  return <input ref={ref} />;
});
const ParentComponent = () => {
  const myRef = useRef(null);
  const handleClick = () => {
    myRef.current.focus();
  };
  return (
    <div>
      <ChildComponent ref={myRef} />
      <button onClick={handleClick}>Focus Input</button>
    </div>
  );
};

В этой статье мы рассмотрели альтернативные подходы к ссылкам на строки в функциональных компонентах React. Мы узнали, как использовать перехват useRef(), ссылки обратного вызова и ссылки пересылки для достижения аналогичной функциональности. Важно быть в курсе последних рекомендаций и лучших практик React, чтобы обеспечить эффективный и удобный в сопровождении код.