news 2026/9/3 0:42:45

点击【历史对话】按钮时会弹出下拉列表,现在需要增加一个功能:点击页面其他区域时隐藏这个下拉列表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
点击【历史对话】按钮时会弹出下拉列表,现在需要增加一个功能:点击页面其他区域时隐藏这个下拉列表

E:\source\aa2_agent12\ui\app\courses\[id]\page.tsx文件,点击【历史对话】按钮时会弹出下拉列表,现在需要增加一个功能:点击页面其他区域时隐藏这个下拉列表

修改内容总结

1. page.tsx:3

添加了useRef导入:

import React, { useState, useEffect, useRef } from 'react'

2. page.tsx:247-268

添加了 ref 和 useEffect 监听点击事件:

// Ref for history dropdown const historyDropdownRef = useRef<HTMLDivElement>(null) // 点击页面其他区域时关闭历史对话下拉列表 useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if ( historyDropdownRef.current && !historyDropdownRef.current.contains(event.target as Node) ) { setShowHistoryDropdown(false) } } if (showHistoryDropdown) { document.addEventListener('mousedown', handleClickOutside) } return () => { document.removeEventListener('mousedown', handleClickOutside) } }, [showHistoryDropdown])

3. page.tsx:1374

将 ref 绑定到下拉菜单的容器上:

<div className='relative' ref={historyDropdownRef}>

工作原理

  1. 创建了一个historyDropdownRef引用,绑定到包含按钮和下拉列表的容器上
  2. 使用useEffect监听showHistoryDropdown的变化
  3. 当下拉列表显示时,添加mousedown事件监听器
  4. 点击事件触发时,检查点击的目标是否在下拉容器内
  5. 如果点击的是外部区域,就关闭下拉列表
  6. 组件卸载或下拉列表关闭时,移除事件监听器

现在点击页面其他区域时,历史对话下拉列表会自动关闭!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 22:42:50

艾莉丝努力练剑的256天创作纪念日:在代码星河中逐梦前行

&#x1f525;艾莉丝努力练剑&#xff1a;个人主页 ❄专栏传送门&#xff1a;《C语言》、《数据结构与算法》、C/C干货分享&学习过程记录、Linux操作系统编程详解、笔试/面试常见算法&#xff1a;从基础到进阶、测试开发要点全知道 ⭐️为天地立心&#xff0c;为生民立命…

作者头像 李华
网站建设 2026/9/2 20:15:46

redis存储空间复杂度和时间复杂度的平衡

下面是一个案例:根据奖品概率计算奖品存储空间以及时间复杂度的权衡. 1. 内存占用的计算 1.1 不同精度下的内存占用 // 精度范围&#xff08;rateRange&#xff09;决定了数组大小 rateRange 10000 // 万分位 (0.0001) rateRange 100000 // 十万分位 (0.00001) r…

作者头像 李华
网站建设 2026/9/1 13:52:53

Spring循环依赖:原理、限制与解决方案深度解析

一、循环依赖的定义与本质在Spring框架中&#xff0c;循环依赖指的是两个或多个Bean之间存在直接或间接的相互引用关系&#xff0c;从而形成一个闭合的依赖环。简而言之&#xff0c;当BeanA依赖BeanB&#xff0c;同时BeanB也依赖BeanA时&#xff0c;便构成了典型的循环依赖。代…

作者头像 李华
网站建设 2026/9/2 22:19:35

漏洞扫描工具深度对比:Burp Suite vs. ZAP

一、工具定位与背景核心解析 1.1 Burp Suite&#xff1a;企业级Web安全审计标杆 开发背景&#xff1a;PortSwigger公司推出的商业化渗透测试套件&#xff08;2003年至今&#xff09; 市场定位&#xff1a;专业安全团队的全生命周期Web应用安全解决方案 代表用户&#xff1a;…

作者头像 李华