diff --git a/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenuTrigger.tsx b/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenuTrigger.tsx index 7b9bb06df6d..6d12cb3d1f5 100644 --- a/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenuTrigger.tsx +++ b/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenuTrigger.tsx @@ -1,4 +1,4 @@ -import React, { HTMLAttributes, MouseEvent, ReactElement, useCallback, useState } from 'react'; +import React, { HTMLAttributes, MouseEvent, ReactElement, useCallback, useRef, useState } from 'react'; import { CartesianCoords2D } from '@grafana/data'; @@ -12,26 +12,23 @@ interface Props extends Omit, 'children'> { } export function PanelHeaderMenuTrigger({ children, ...divProps }: Props) { - const [clickCoordinates, setClickCoordinates] = useState({ x: 0, y: 0 }); + const clickCoordinates = useRef({ x: 0, y: 0 }); const [panelMenuOpen, setPanelMenuOpen] = useState(false); const onMenuToggle = useCallback( (event: MouseEvent) => { - if (!isClick(clickCoordinates, eventToClickCoordinates(event))) { + if (!isClick(clickCoordinates.current, eventToClickCoordinates(event))) { return; } setPanelMenuOpen(!panelMenuOpen); }, - [clickCoordinates, panelMenuOpen, setPanelMenuOpen] + [panelMenuOpen, setPanelMenuOpen] ); - const onMouseDown = useCallback( - (event: MouseEvent) => { - setClickCoordinates(eventToClickCoordinates(event)); - }, - [setClickCoordinates] - ); + const onMouseDown = useCallback((event: MouseEvent) => { + clickCoordinates.current = eventToClickCoordinates(event); + }, []); return (