Если вы хотите запустить повторную визуализацию после изменения ссылки, вы должны использовать useState
вместо useRef
. Только так вы можете гарантировать, что компонент будет повторно визуализирован. Например:
function Component() {
const [ref, setRef] = useState();
return <div ref={newRef => setRef(newRef)} />
}
Как описано в документации useRef :
Имейте в виду, что useRef
не уведомляет вас когда его содержание меняется. Отключение свойства .current
не вызывает повторного рендеринга. Если вы хотите запустить некоторый код, когда React присоединяет или отсоединяет ссылку на узел DOM, вы можете вместо этого использовать обратный вызов ref .
Иногда может быть лучше сохраните любое значение, которое вы получаете от узла DOM, как предложено здесь , вместо сохранения самого узла.