如何在鼠标点击指定元素以外的元素时 触发事件

1. 思路

步骤一:通过React.useRef()获取指定元素;

步骤二:给document对象添加点击事件;

步骤三:通过ref.current.contains()函数判断点击的元素是否是当前元素;

步骤四:如果不是当前元素(非指定元素)则执行想要的事件;

2. 代码

javascript 复制代码
const Box = (props: any) => {
  const ref = useRef(null);

  const handleClickOutside = (event) => {
    if (!ref.current) return;
    if (!ref?.current?.contains?.(event.target)) {
      // 在这里执行你需要的操作
      console.log('你没有点击Box');
    } else {
      console.log('你点击了Box');
    }
  };

  useEffect(() => {
    // 添加事件监听器到document
    document.addEventListener('click', handleClickOutside, true);
    return () => {
      // 组件卸载时移除监听器
      document.removeEventListener('click', handleClickOutside, true);
    };
  }, []);

  return (
    <div ref={ref}>
        指定元素
    </div>
  );
};

export default Box;
相关推荐
研來如此20 小时前
C++ 接口设计 && Doxygen 注释
前端·javascript·c++
野槐21 小时前
Electron开发
前端·javascript·electron
#做一个清醒的人21 小时前
【Electron】开发两年Electron项目评估报告
前端·electron
lizhongxuan1 天前
Claude Code 防上下文爆炸:源码级深度解析
前端·后端
天真萌泪1 天前
JS逆向自用
开发语言·javascript·ecmascript
柳杉1 天前
震惊!字符串还能这么玩!
前端·javascript
是上好佳佳佳呀1 天前
【前端(五)】CSS 知识梳理:浮动与定位
前端·css
仍然.1 天前
算法题目---模拟
java·javascript·算法
wefly20171 天前
纯前端架构深度解析:jsontop.cn,JSON 格式化与全栈开发效率平台
java·前端·python·架构·正则表达式·json·php
我命由我123451 天前
React - 类组件 setState 的 2 种写法、LazyLoad、useState
前端·javascript·react.js·html·ecmascript·html5·js