Хук useRef()
возвращает ссылку на объект со свойством current
. Свойство current
является фактическим значением, на которое указывает useRef
.
Чтобы использовать ссылку, просто установите ее для элемента:
<div id="timeline" ref={timelineRef}>
<div id="handle" onMouseDown={mouseDown} ref={handleRef} />
А затем, чтобы использовать ее, вам нужно обратиться к свойству current
:
let position = current.timelineRef.offsetWidth * ratio;
И positionHandle
- на самом деле вы не должны устанавливать стили для элементов в React таким образом. Используйте хук setState()
и установите стиль с помощью JSX.
const positionHandle = (position) => {
let timelineWidth = timelineRef.current.offsetWidth - handleRef.current.offsetWidth;
let handleLeft = position - timelineRef.current.offsetLeft;
if (handleLeft >= 0 && handleLeft <= timelineWidth) {
handleRef.current.style.marginLeft = handleLeft + "px";
}
if (handleLeft < 0) {
handleRef.current.style.marginLeft = "0px";
}
if (handleLeft > timelineWidth) {
handleRef.current.style.marginLeft = timelineWidth + "px";
}
};
Кроме того, ссылка может также использоваться для других значений, таких как new Audio(url)
, и извлекаться из current
свойство:
const { current: audio } = useRef(new Audio(url));