我在用@react-google-maps/api
当我将三个回调放在这样的 Polygon 组件上时
const callBacks = useEventCallback(t => {
console.log(t);
});
return (
<Polygon
{...otherProps}
{...callBacks}
path={path}
editable={disabled ? false : true}
onLoad={poly => {
polyRef.current = poly;
}}
/>
);
还有 useEventCallback
import { useCallback, useEffect, useState } from "react";
type CallbackType = "mouse_up" | "double_click" | "right_click" | null;
function useEventCallback(onChange: (type: CallbackType) => void) {
const [currentCallback, setCallback] = useState<CallbackType>();
function handleChange(e: any, type: CallbackType) {
setCallback(type);
}
useEffect(() => {
let timer;
if (!timer) {
timer = setTimeout(() => {
console.log(currentCallback);
}, 100);
}
}, [currentCallback]);
const onMouseUp = useCallback((e: any) => handleChange(e, "mouse_up"), [
handleChange,
]);
const onDblClick = useCallback((e: any) => handleChange(e, "double_click"), [
handleChange,
]);
const onRightClick = useCallback((e: any) => handleChange(e, "right_click"), [
handleChange,
]);
return {
onRightClick,
onMouseUp,
onDblClick,
};
}
当我右键单击一个点时
PS。事件对象是IDENTICAL,没有办法区分它们。
当调用 right_click 事件时,有什么方法可以不调用 on_mouse。?