Изменение состояния без повторного рендеринга / React
Каждый раз, когда состояния (useState
, useReducer
) компонента изменяются, весь компонент рендерится заново. Это означает, что текущий и каждый дочерний, зависимый от этого состояния компонент будет повторно перерисовывать себя.
В разработке может возникнуть необходимость поменять состояние, но не вызывать перерисовку компонента (-ов). В этом будет полезен хук useRef
.
Хук React.useRef()
— это функция, которая возвращает изменяемый объект ссылки. У этого объекта есть свойство под названием current
. Доступ к значению, сохраненному с помощью хука useRef
, можно получить или обновить через свойство current
. Этот объект сохраняет значение в течение всего срока службы компонента.
const refValue = React.useRef("Initial value"); <-- initializing refValue.current = "new value"; <-- Assigning new value through 'current' property console.log(refValue.current); <-- Accessing values using 'current' property >> "new value" <<
Оба хука и useState
, и useRef
могут использоваться для сохранения состояния. Но обновление значений useState
приводит к повторному рендерингу компонента, тогда как для useRef
не происходит повторного рендеринга при обновлении значения.
Также useRef
используется для сохранения ссылки на элементы DOM-дерева. Но это уже совсем другая тема.
Ссылка на источник.