Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про React: ref, dom

Каким способом лучше всего получить доступ к нативному DOM-элементу из React-компонента?

Вопрос проверяет знание методов работы с реальными DOM-элементами в React

Короткий ответ

Лучший способ — рефы (refs). В функциональных компонентах используют useRef, в классовых — React.createRef(). Реф даёт прямой доступ к DOM-узлу после его создания.

Длинный ответ

1. Функциональные компоненты (хуки)

Создание рефа:

import { useRef } from 'react';

function MyComponent() {
  	const inputRef = useRef(null);
}

Привязка к элементу через ref:

<input ref={inputRef} type="text" />

Доступ к DOM:

const focusInput = () => {
  	inputRef.current.focus(); // Установка фокуса на инпут
};

2. Классовые компоненты

Создание рефа:

class MyComponent extends React.Component {
  	constructor(props) {
    		super(props);
    		this.inputRef = React.createRef();
 	 }
}

Привязка и использование:

<input ref={this.inputRef} type="text" />

// Где-то в методе:
this.inputRef.current.focus();

3. Callback-рефы (устаревший способ, но полезно знать)

Пример в классовых компонентах:

<input ref={(el) => { this.inputRef = el; }} />

Когда использовать рефы:

  • Фокусировка, анимации, измерение размеров элемента.

  • Интеграция с библиотеками (например, D3.js, GreenSock).

Ограничения:

  • Нельзя передавать рефы как пропсы между компонентами (для этого используется forwardRef).

  • Избегайте чрезмерного использования

Пример с forwardRef (если нужно передать реф дочернему компоненту):

const Child = React.forwardRef((props, ref) => (
  	<input ref={ref} {...props} />
));

function Parent() {
  	const inputRef = useRef();
  	return <Child ref={inputRef} />;
}

Уровень

  • Рейтинг:

    3

  • Сложность:

    4

Навыки

  • React

    React

Ключевые слова

#ref

#dom

Подпишись на React Developer в телеграм