В мире функциональных компонентов React ссылки на строки когда-то были распространенным способом доступа к элементам DOM и манипулирования ими. Однако, начиная с версии React 16.3, ссылки на строки устарели и заменены ловушкой useRef(). В этой статье мы рассмотрим различные методы и примеры кода для достижения аналогичной функциональности с помощью useRef() и других альтернативных подходов.
- Использование 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>
);
};
- Ссылки обратного вызова.
Другой подход — использовать ссылки обратного вызова, которые включают передачу функции в качестве значения ссылки. Эта функция будет вызываться с элементом 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>
);
};
- Пересылка ссылок:
Если вам нужно передать ссылку дочернему компоненту, вы можете использовать пересылку ссылок. Это позволяет вам напрямую обращаться к элементу 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, чтобы обеспечить эффективный и удобный в сопровождении код.