Я создаю пользовательский курсор мыши для каждого компонента (например, пользовательский курсор мыши на элементе фигуры).Я пишу пользовательский крючок для этого.Пока это ловушка:
const useMouseCoords = () => {
let [coords, setCoords] = useState({ x: 0, y: 0 })
// I need to calculate the coordinates from the parents offset. Here is where I'm stuck.
let offsetParent = parentRef.current.getBoundingClientRect()
function handleCoords(e) {
setCoords({
x: e.clientX - offsetParent.x,
y: e.clientY - offsetParent.y,
})
}
useEffect(() => {
if (typeof window === `undefined`) return // escape gatsby build process
window.addEventListener('mousemove', handleCoords)
return () => {
window.removeEventListener('mousemove', handleCoords)
}
}, [])
return coords
}
Компонент курсора мыши довольно прост:
const MouseCursor = (props) => {
let { x, y } = useMouseCoords()
return (
<div
className="mouse-cursor-button"
style={{
transform: `translate(${x}px, ${y}px)`,
}}
>
<div className="mouse-cursor-button__text">Click to play</div>
</div>
)
}
Код, конечно, не работает, но скорее для иллюстрации того, что я пытаюсьдостижения.
Поэтому мне нужен родительский компонент компонента MouseCursor для вычисления смещения.Я застрял в той части, где я хочу сослаться на родительский компонент.Я надеялся, что смогу передать это в качестве аргумента на крючок.
Итак, вопрос в том, как я могу получить доступ к родительскому компоненту в хуке?