0

我在用@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。?

4

0 回答 0