useRef Flashcards

1
Q

useRef

A

Хук useRef() возвращает объект, свойство current которого содержит ссылку на узел DOM. Данный хук также может использоваться для сохранения любого мутирующего значения.

const ref = useRef(initialValue)

Параметры
initialValue: Значение, которое вы хотите присвоить свойству current объекта ref изначально. Это может быть значение любого типа. Этот аргумент игнорируется после первоначального рендеринга.
ВОЗВРАТ
useRef возвращает объект с одним свойством:

currentИзначально он устанавливается в initialValue переданное вами значение. Позже вы можете установить его в другое значение. Если вы передадите объект ref в React в качестве ref атрибута для узла JSX, React установит его свойство current
При следующем рендеринге useRef вернет тот же объект.

Пример использования можно увидеть в неконтролируемомinput

useRef возвращает объект-ссылку с одним currentсвойством, изначально установленным на начальное значение, которое вы указали.

При следующем рендеринге useRef будет возвращён тот же объект. Вы можете изменить его свойство current для хранения информации и последующего её считывания. Это может напомнить вам состояние, но есть важное отличие.

Изменение ссылки не приводит к повторному рендерингу. Это означает, что ссылки идеально подходят для хранения информации, которая не влияет на визуальное представление вашего компонента. Например, если вам нужно сохранить идентификатор интервала и получить его позже, вы можете поместить его в ссылку. Чтобы обновить значение внутри ссылки, вам нужно вручную изменить её currentсвойство
function handleStartClick() {
const intervalId = setInterval(() => {
// …
}, 1000);
intervalRef.current = intervalId;
}

Используя ссылку, вы гарантируете, что:

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly