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

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;
相关推荐
csj501 小时前
前端基础之《React(9)—React组件》
前端·react.js
研究点啥好呢1 小时前
Muses | 搭建属于你自己的AI生图网站
前端·人工智能·ai·github
aircrushin1 小时前
给宝宝办了个宴,朋友用trae做的工具帮了大忙
前端·后端
程序员Sunday1 小时前
爆肝万字!这应该是全网最全的 Codex 实战教程了
前端·后端·ai编程
aircrushin1 小时前
朋友用trae搭建的工具,解决了旅行拍照共享的大事儿
前端·后端
ZC跨境爬虫2 小时前
跟着 MDN 学 HTML day_41:(DOMParser 接口详解)
前端·javascript·ui·html·音视频
threelab2 小时前
Three.js 概率统计可视化 | 三维可视化 / AI 提示词
开发语言·javascript·人工智能
光影少年2 小时前
useLayoutEffect 和 useEffect 区别、使用场景
开发语言·前端·javascript
LIO2 小时前
掌握 React useEffect:核心概念、使用技巧与常见陷阱
前端·react.js
XD7429716362 小时前
科技早报晚报|2026年5月12日:GUI Agent、编程会话工作台与 npm 安装门禁,今晚更值得做的 3 个技术机会
前端·科技·npm·供应链安全·ai agent·开发者工具