Поскольку ref.current
всегда неопределен. Вам нужно установить ref для некоторого элемента html, чтобы избежать неопределенности. Имхо, вам нужно иметь setRef
function / const в вашем хуке, а затем возвращать его из хука как return [ref, setRef, hovered]; Тогда в компоненте, где вы используете этот хук, когда этот компонент монтируется, установите ref для какого-либо элемента.
Обновление:
На самом деле все, что вам нужно сделать, это обернуть
ref.current.addEventListener("mouseenter", enter);
ref.current.addEventListener("mouseleave", leave);
с if (ref.current) { ... }
. В противном случае вы пытаетесь подключить прослушиватели событий до того, как на элемент html будет сделана ссылка. Пример