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